> > you mentioned this might need to change as well.
> >
> > Was there a reason why I haven't looked at this before? It's quite an old
> > series,
> > usually I don't wait for so long. If it was because I was really slow, then
> > I
> > apologize and please kick me sooner if you see a review like this take so
> > long.
>
> I'm not sure, but Sakari definitely went over previous interations and made
> various comments,so the series definitely hasn't gone unreviewed!
My acks seem to be missing. Let me go through it. As for Hans: please ping
if you don't get reviews.
--
Kind regards,
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Hi Deepak,
On Fri, Apr 30, 2021 at 10:34:37PM +0530, Deepak R Varma wrote:
> On Fri, Apr 30, 2021 at 07:33:27PM +0300, Sakari Ailus wrote:
> > Hi Deepak,
> >
> > If you're touching all these lines, I might do a little more. Please see
> > the comments bel
odd_line_bytes;
> }
>
> @@ -393,7 +389,8 @@ static bool buffers_needed(struct ia_css_pipe *pipe)
>
> int
> allocate_mipi_frames(struct ia_css_pipe *pipe,
> - struct ia_css_stream_info *info) {
> + struct ia_css_stream_info *info)
s = <0>;
> +
> +mipi_csi2_in: port@0 {
> +reg = <0>;
> +
> +mipi_csi2_in_ov8865: endpoint {
> +bus-type = <4>; /* MIPI CSI-2 D-PHY */
> +clock-lanes = <0>;
> +
BIT(27)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_ECC_ERRBIT(26)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_LINE_SYNC_ERR BIT(25)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_FRAME_SYNC_ERR BIT(24)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_EMB_DATA BIT(18)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_PF BIT(17)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_PH_UPDATE BIT(16)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_LINE_START_SYNCBIT(11)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_LINE_END_SYNC BIT(10)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_FRAME_START_SYNC BIT(9)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_FRAME_END_SYNC BIT(8)
> +#define SUN6I_MIPI_CSI2_CH_INT_EN_FIFO_OVER BIT(0)
> +
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_REG0x58
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_EOT_ERRBIT(29)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_CHKSUM_ERR BIT(28)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_ECC_WRNBIT(27)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_ECC_ERRBIT(26)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_LINE_SYNC_ERR BIT(25)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_FRAME_SYNC_ERR BIT(24)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_EMB_DATA BIT(18)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_PF BIT(17)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_PH_UPDATE BIT(16)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_LINE_START_SYNCBIT(11)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_LINE_END_SYNC BIT(10)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_FRAME_START_SYNC BIT(9)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_FRAME_END_SYNC BIT(8)
> +#define SUN6I_MIPI_CSI2_CH_INT_PD_FIFO_OVER BIT(0)
> +
> +#define SUN6I_MIPI_CSI2_CH_DT_TRIGGER_REG0x60
> +#define SUN6I_MIPI_CSI2_CH_CUR_PH_REG0x70
> +#define SUN6I_MIPI_CSI2_CH_ECC_REG 0x74
> +#define SUN6I_MIPI_CSI2_CH_CKS_REG 0x78
> +#define SUN6I_MIPI_CSI2_CH_FRAME_NUM_REG 0x7c
> +#define SUN6I_MIPI_CSI2_CH_LINE_NUM_REG 0x80
> +
> +#define SUN6I_MIPI_CSI2_CH_REG(reg, ch) \
> + (SUN6I_MIPI_CSI2_CH_BASE + SUN6I_MIPI_CSI2_CH_OFFSET * (ch) + (reg))
> +
> +enum mipi_csi2_data_type {
> + MIPI_CSI2_DATA_TYPE_RAW8= 0x2a,
> + MIPI_CSI2_DATA_TYPE_RAW10 = 0x2b,
> + MIPI_CSI2_DATA_TYPE_RAW12 = 0x2c,
> +};
> +
> +struct sun6i_mipi_csi2_video {
> + struct v4l2_fwnode_endpoint endpoint;
> + struct v4l2_subdev subdev;
> + struct media_pad pads[2];
> +
> + struct v4l2_async_subdev subdev_async;
> + struct v4l2_async_notifier notifier;
> +
> + struct v4l2_subdev *remote_subdev;
> + u32 remote_pad_index;
> + u32 mbus_code;
> +};
> +
> +struct sun6i_mipi_csi2_dev {
> + struct device *dev;
> +
> + struct regmap *regmap;
> + struct clk *clk_mod;
> + struct reset_control *reset;
> + struct phy *dphy;
> +
> + struct sun6i_mipi_csi2_video video;
> +};
> +
> +#define sun6i_mipi_csi2_subdev_video(subdev) \
> + container_of(subdev, struct sun6i_mipi_csi2_video, subdev)
> +
> +#define sun6i_mipi_csi2_video_dev(video) \
> + container_of(video, struct sun6i_mipi_csi2_dev, video)
> +
> +#endif /* __SUN6I_MIPI_CSI2_H__ */
--
Regards,
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
#address-cells = <1>;
> +#size-cells = <0>;
> +
> +mipi_csi2_in: port@0 {
> +reg = <0>;
> +
> +mipi_csi2_in_ov5648: endpoint {
> +bus-type = <4>; /* MIPI CSI-2 D-PHY */
>
markups should use this format:
> identifier - description
>
> Signed-off-by: Mauro Carvalho Chehab
On IPU3 and V4L2 bits:
Acked-by: Sakari Ailus
--
Regards,
Sakari Ailus
___
devel mailing list
de...@lin
Hi Andy,
On Thu, Sep 17, 2020 at 03:45:14PM +0300, Andy Shevchenko wrote:
> On Thu, Sep 17, 2020 at 11:52:28AM +0100, Dan Scally wrote:
> > On 17/09/2020 11:33, Sakari Ailus wrote:
> > > a module and not enlarge everyone's kernel, and the initialisation would
> >
Hi Dan,
On Thu, Sep 17, 2020 at 01:49:41PM +0300, Dan Carpenter wrote:
> On Thu, Sep 17, 2020 at 01:33:43PM +0300, Sakari Ailus wrote:
> > > +static int connect_supported_devices(void)
> > > +{
> > > + struct acpi_device *adev;
> > > + struct device *de
ret = connect_supported_devices();
> +
> + if ((ret < 0) || (bridge.n_sensors <= 0)) {
> + pr_err("cio2_bridge: Failed to connect any devices\n");
> + goto out;
> + } else {
> + pr_info("Found %d supported devices\n", bridge.n_sensors);
> + }
> +
> + bridge.cio2 = pci_get_device(PCI_VENDOR_ID_INTEL, CIO2_PCI_ID, NULL);
> + if (!bridge.cio2) {
> + ret = -ENODEV;
> + goto out;
> + }
> +
> + fwnode = software_node_fwnode(&cio2_hid_node);
> + if (!fwnode) {
> + pr_err("Error getting fwnode from cio2 software_node\n");
> + ret = -ENODEV;
> + goto out;
> + }
> +
> + /*
> + * We store the pci_dev's existing fwnode, beccause in the event we
> + * want to reload (I.E. rmmod and insmod) this module we need to give
> + * the device its original fwnode back to prevent problems down the
> + * line
> + */
> +
> + bridge.cio2_fwnode = fwnode_handle_get(bridge.cio2->dev.fwnode);
> +
> + fwnode->secondary = ERR_PTR(-ENODEV);
> + bridge.cio2->dev.fwnode = fwnode;
> +
> + return 0;
> +out:
> + cio2_bridge_exit();
> + return ret;
> +}
> +
> +static int cio2_bridge_unregister_sensors(void)
> +{
> + int i, j;
> + struct sensor *sensor;
> +
> + for (i = 0; i < bridge.n_sensors; i++) {
> + sensor = &bridge.sensors[i];
> +
> + /* give the sensor its original fwnode back */
> + sensor->dev->fwnode = sensor->fwnode;
> + fwnode_handle_put(sensor->fwnode);
> + put_device(sensor->dev);
> +
> + for (j = 4; j >= 0; j--)
> + software_node_unregister(&sensor->swnodes[j]);
> + }
> +
> + return 0;
> +}
> +
> +static void cio2_bridge_exit(void)
> +{
> + int ret;
> +
> + /* Give the pci_dev its original fwnode back */
> + if (bridge.cio2) {
> + bridge.cio2->dev.fwnode = bridge.cio2_fwnode;
> + fwnode_handle_put(bridge.cio2_fwnode);
> + pci_dev_put(bridge.cio2);
> + }
> +
> + ret = cio2_bridge_unregister_sensors();
> +
> + if (ret)
> + pr_err("An error occurred unregistering the sensors\n");
> +
> + software_node_unregister(&cio2_hid_node);
> +}
> +
> +module_init(cio2_bridge_init);
> +module_exit(cio2_bridge_exit);
> +
> +MODULE_DESCRIPTION("A bridge driver to connect sensors to CIO2
> infrastructure.");
> +MODULE_LICENSE("GPL v2");
> +MODULE_ALIAS("acpi*:INT343E:*");
--
Kind regards,
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
, 1, PCI_IRQ_MSI);
>
> - if (r) {
> + if (r < 0) {
> dev_err(&dev->dev, "failed to enable MSI (%d)\n", r);
> return r;
> }
I believe fixing this requires also releasing it, i.e. a call to
pci_free_irq_vectors(). This seems to have been
uot;media: atomisp: get rid of an iomem abstraction layer")
> Signed-off-by: Dan Carpenter
Acked-by: Sakari Ailus
--
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
nge the place where we're commenting the code out, in order
> to avoid the warning.
>
> Fixes: 95d1f398c4dc ("media: atomisp: keep the ISP powered on when setting
> it")
> Signed-off-by: Mauro Carvalho Chehab
Acked-by: Sakari Ailus
Note that some of this may b
On Thu, May 21, 2020 at 08:44:32PM +0100, Colin King wrote:
> From: Colin Ian King
>
> There are several spelling mistakes in various messages and literal
> strings. Fix these.
>
> Signed-off-by: Colin Ian King
Acked-by: Sakari Ailus
On Mon, May 25, 2020 at 08:55:59AM +0200, Mauro Carvalho Chehab wrote:
> The atomisp driver has lots of issues. This series get rid of a few of
> them and updates the TODO list to reflect the current status and
> provide more details aboug some items.
Acked-by: Sakari Ailus
--
Sak
I structs of this
driver use. I'd prefer atomisp_something, ia_css has been used internally,
and that probably has been there in later firmware versions (vs. just css).
At this point removing the duplication makes sense though, so I'm not
proposing changes h
churn until this driver becomes functional again.
>
> -13. While the driver probes the hardware and reports itself as a
> -V4L2 driver, there are still some issues preventing it to
> -stream (at least it doesn't with the standard V4L2 applications.
> -Didn't test yet with some custom-made app for this driver).
> -Solving the related bugs and issues preventing it to work is
> -needed.
> -
> -Limitations:
> +Limitations
> +===
>
> 1. To test the patches, you also need the ISP firmware
>
> @@ -84,6 +178,8 @@ Limitations:
> It will not detect those devices enumerated via ACPI as a field of the
> i915 GPU driver.
>
> + There are some patches adding i915 GPU support floating at the Yocto's
> + Aero repository (so far, untested upstream).
> +
> 4. The driver supports only v2 of the IPU/Camera. It will not work with the
> versions of the hardware in other SoCs.
> -
> --
> 2.26.2
>
--
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Hi Mauro,
On Wed, May 20, 2020 at 09:44:00AM +0200, Mauro Carvalho Chehab wrote:
> Hi Sakari,
>
> Em Sun, 17 May 2020 13:36:59 +0300
> Sakari Ailus escreveu:
>
> > Hi Mauro,
> >
> > Thanks for the patch.
>
> Thanks for reviewing it.
>
> >
>
78"},
> + {"INT3479"},
> + {"INT347A"},
> + {"INT347B"},
> + {"OVTI9234"},
> + {"OVTI9734"},
> + {"OVTI8856"},
> + {"OVTIF860"},
> + {},
> +};
> +MODULE_DEVICE_
Hi Steve,
Btw. I think probably a smaller list of recipients would be just fine on the
next version.
On Fri, Feb 28, 2020 at 10:16:06AM -0800, Steve Longerbeam wrote:
> Hi Sakari,
>
> On 2/25/20 7:07 AM, Sakari Ailus wrote:
> > Hi Steve,
> >
> > On Sat, Feb 15, 2020
On Wed, Feb 26, 2020 at 03:50:04PM -0800, Steve Longerbeam wrote:
> Hi Sakari,
>
> Thanks for the feedback.
>
>
> On 2/25/20 7:07 AM, Sakari Ailus wrote:
> > Hi Steve,
> >
> > On Sat, Feb 15, 2020 at 11:41:21AM -0800, Steve Longerbeam wrote:
>
c | 7 ++-
> drivers/staging/media/imx/imx7-media-csi.c | 7 ++-
> drivers/staging/media/imx/imx7-mipi-csis.c | 9 -
> include/media/v4l2-fwnode.h| 12
> 6 files changed, 36 insertions(+), 18 deletions(-)
--
Kind regards,
Sakari Ailus
_
;clks IMX6UL_CLK_CSI>;
> + clock-names = "mclk";
> + status = "disabled";
> + };
> +
> lcdif: lcdif@21c8000 {
> compatible = "fsl,imx6ul-lcdif",
> "fsl,imx28
s is part a tree-wide conversion, as described in commit fc1d8e7cca2d
> ("mm: introduce put_user_page*(), placeholder versions").
>
> Cc: Mauro Carvalho Chehab
> Cc: Kees Cook
> Cc: Hans Verkuil
> Cc: Sakari Ailus
> Cc: Jan Kara
> Cc: Robin Murphy
>
epend on IOMMU_SUPPORT but that's not
declared in its Kconfig entry. I wonder if adding that would be the right
way to fix this.
Cc'ing the IOMMU list.
> select VIDEOBUF2_DMA_SG
> help
> This is the Video4Linux2 driver for Intel IPU3 image processing unit
to do the same replacement that I'd done in other
> staging drivers, I thought I would do something about the type mismatch
> first, especially since find_format doesn't appear to be used anywhere else.
> However, now I won't remove check_format and replace it with find_format as
> I'd originally planned, since you've said that isn't necessary here. That
> leaves the return type issue.
>
>
> > So in the end, I think we should keep the !! and drop the (bool) cast if
> > there's
> > no particular warning about it.
>
> Should I send a version 3 that does this?
bool was introduced in C99. Converting a non-zero value to boolean will
yield true as a result. Please keep the code as-is; it's much easier to
read that way.
--
Kind regards,
Sakari Ailus
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
m
> and do give them a rejuvenation shower in order to address the
> isues pointed on their TODO lists, be our guest!
>
> Signed-off-by: Mauro Carvalho Chehab
Acked-by: Sakari Ailus
--
Sakari Ailus
sakari.ai...@linux.intel.com
_
On Sat, Apr 20, 2019 at 11:04:07AM +, MosesChristopher wrote:
> From: Moses Christopher
>
> - Resolve the following warning from the Kconfig,
> "WARNING: prefer 'help' over '---help---' for new help texts"
>
> Signed-off-by: Moses Chri
quot;media: staging/intel-ipu3: Add css pipeline
> programming")
> Signed-off-by: Arnd Bergmann
> ---
> v2: restructure to use 'return -ENOMEM' instead of goto for failed
> allocation.
Thanks, Arnd! All three applied.
--
Sakari Ailus
sakari.ai...@linux.i
On Tue, Mar 05, 2019 at 09:40:24AM +0100, Arnd Bergmann wrote:
> On Tue, Mar 5, 2019 at 8:53 AM Sakari Ailus
> wrote:
> > On Tue, Mar 05, 2019 at 12:25:18AM +, Cao, Bingbu wrote:
>
> > > > struct v4l2_pix_format_mplane *const in =
> > > >
resolution adjustment failed\n");
> > - return -EINVAL;
> > + ret = -EINVAL;
> > + goto out;
> > }
> > *fmts[i] = q[i].fmt.mpix;
> >
On Tue, Feb 19, 2019 at 09:00:30AM -0500, Mauro Carvalho Chehab wrote:
> Some kernel-doc markups are wrong. fix them.
>
> Signed-off-by: Mauro Carvalho Chehab
Acked-by: Sakari Ailus
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
deve
g, type-limits)
> +ccflags-y += $(call cc-disable-warning, unused-const-variable)
I'm preparing patches to address these. Could you wait a little bit more,
please?
Thanks.
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
d
ce unregister before ctrl_handler_free
> - GPL => GPL v2
> - Fix squash of CSI patches, issue on v11
> - add Acked-by: Sakari Ailus 10--13
> - mipi_s_stream check for ret < 0 and call pm_runtime_put_noidle
> - use __maybe_unused in pm function
r);
> > + if (ret < 0) {
> > dev_err(css->dev, "failed to find suitable binary\n");
> > return -EINVAL;
> > }
> > + css->pipes[pipe].bindex = ret;
> >
> > dev_dbg(css->dev, "Binary index %d for pipe %d found.",
> > css->pipes[pipe].bindex, pipe);
> >
>
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Hi Raj,
On Wed, Jan 30, 2019 at 05:17:15PM +, Mani, Rajmohan wrote:
> Hi Sakari,
>
> > -Original Message-
> > From: Sakari Ailus [mailto:sakari.ai...@linux.intel.com]
> > Sent: Wednesday, January 30, 2019 12:59 AM
> > To: Mani, Rajmohan
> > Cc
->queue[b->queue].bufs);
> @@ -2071,7 +2078,8 @@ struct ipu3_css_buffer *ipu3_css_buf_dequeue(struct
> ipu3_css *css)
> return ERR_PTR(-EIO);
> }
>
> - dev_dbg(css->dev, "buffer 0x%8x done from pipe %d\n", daddr,
&
Hi Raj,
On Wed, Jan 30, 2019 at 05:17:15PM +, Mani, Rajmohan wrote:
> Hi Sakari,
>
> > -Original Message-
> > From: Sakari Ailus [mailto:sakari.ai...@linux.intel.com]
> > Sent: Wednesday, January 30, 2019 12:59 AM
> > To: Mani, Rajmohan
> > Cc
events, mipi_csis_events, sizeof(state->events));
> +
> + mipi_csis_debugfs_init(state);
> + pm_runtime_enable(dev);
> + if (!pm_runtime_enabled(dev)) {
> + ret = mipi_csis_pm_resume(dev, true);
> + if (ret < 0)
> + goto unregister_all;
> + }
> +
> + dev_info(&pdev->dev, "lanes: %d, hs_settle: %d, wclk: %d, freq: %u\n",
> + state->bus.num_data_lanes, state->hs_settle,
> + state->wrap_clk ? 1 : 0, state->clk_frequency);
> +
> + return 0;
> +
> +unregister_all:
> + mipi_csis_debugfs_exit(state);
> + media_entity_cleanup(&state->mipi_sd.entity);
> +unregister_subdev:
> + v4l2_async_unregister_subdev(&state->mipi_sd);
> +disable_clock:
> + mipi_csis_clk_disable(state);
> + mutex_destroy(&state->lock);
> +
> + return ret;
> +}
> +
> +static int mipi_csis_pm_suspend(struct device *dev, bool runtime)
> +{
> + struct platform_device *pdev = to_platform_device(dev);
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> + int ret = 0;
> +
> + mutex_lock(&state->lock);
> + if (state->flags & ST_POWERED) {
> + mipi_csis_stop_stream(state);
> + ret = regulator_disable(state->mipi_phy_regulator);
> + if (ret)
> + goto unlock;
> + mipi_csis_clk_disable(state);
> + state->flags &= ~ST_POWERED;
> + if (!runtime)
> + state->flags |= ST_SUSPENDED;
> + }
> +
> + unlock:
Extra space here.
> + mutex_unlock(&state->lock);
> +
> + return ret ? -EAGAIN : 0;
> +}
> +
> +static int mipi_csis_pm_resume(struct device *dev, bool runtime)
> +{
> + struct platform_device *pdev = to_platform_device(dev);
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> + int ret = 0;
> +
> + mutex_lock(&state->lock);
> + if (!runtime && !(state->flags & ST_SUSPENDED))
> + goto unlock;
> +
> + if (!(state->flags & ST_POWERED)) {
> + ret = regulator_enable(state->mipi_phy_regulator);
> + if (ret)
> + goto unlock;
> +
> + state->flags |= ST_POWERED;
> + mipi_csis_clk_enable(state);
> + }
> + if (state->flags & ST_STREAMING)
> + mipi_csis_start_stream(state);
> +
> + state->flags &= ~ST_SUSPENDED;
> +
> + unlock:
Ditto.
> + mutex_unlock(&state->lock);
> +
> + return ret ? -EAGAIN : 0;
> +}
> +
> +static int mipi_csis_suspend(struct device *dev)
> +{
> + return mipi_csis_pm_suspend(dev, false);
> +}
> +
> +static int mipi_csis_resume(struct device *dev)
> +{
> + return mipi_csis_pm_resume(dev, false);
> +}
> +
> +static int mipi_csis_runtime_suspend(struct device *dev)
> +{
> + return mipi_csis_pm_suspend(dev, true);
> +}
> +
> +static int mipi_csis_runtime_resume(struct device *dev)
__maybe_unused for these four?
> +{
> + return mipi_csis_pm_resume(dev, true);
> +}
> +
> +static int mipi_csis_remove(struct platform_device *pdev)
> +{
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> +
> + mipi_csis_debugfs_exit(state);
> + v4l2_async_unregister_subdev(&state->mipi_sd);
> + v4l2_async_notifier_unregister(&state->subdev_notifier);
> +
> + pm_runtime_disable(&pdev->dev);
> + mipi_csis_pm_suspend(&pdev->dev, true);
> + mipi_csis_clk_disable(state);
> + media_entity_cleanup(&state->mipi_sd.entity);
> + mutex_destroy(&state->lock);
> + pm_runtime_set_suspended(&pdev->dev);
> +
> + return 0;
> +}
> +
> +static const struct dev_pm_ops mipi_csis_pm_ops = {
> + SET_RUNTIME_PM_OPS(mipi_csis_runtime_suspend, mipi_csis_runtime_resume,
> +NULL)
> + SET_SYSTEM_SLEEP_PM_OPS(mipi_csis_suspend, mipi_csis_resume)
> +};
> +
> +static const struct of_device_id mipi_csis_of_match[] = {
> + { .compatible = "fsl,imx7-mipi-csi2", },
> + { /* sentinel */ },
> +};
> +MODULE_DEVICE_TABLE(of, mipi_csis_of_match);
> +
> +static struct platform_driver mipi_csis_driver = {
> + .probe = mipi_csis_probe,
> + .remove = mipi_csis_remove,
> + .driver = {
> + .of_match_table = mipi_csis_of_match,
> + .name = CSIS_DRIVER_NAME,
> + .pm = &mipi_csis_pm_ops,
> + },
> +};
> +
> +module_platform_driver(mipi_csis_driver);
> +
> +MODULE_DESCRIPTION("i.MX7 MIPI CSI-2 Receiver driver");
> +MODULE_LICENSE("GPL");
"GPL" or "GPL v2"?
> +MODULE_ALIAS("platform:imx7-mipi-csi2");
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
> The csi and mipi-csi entities pass all compliance tests.
For patches 1, 4 and 10--13:
Acked-by: Sakari Ailus
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
;clks),
> + GFP_KERNEL);
> +
> + if (!csi->clks)
> + return -ENOMEM;
> +
> + for (i = 0; i < csi->num_clks; i++)
> + csi->clks[i].id = imx7_csi_clk_id[i];
> +
> + return devm_clk_bulk_get(dev, csi->num_clks, csi->clks);
> +}
>
> }
>
> static int __maybe_unused imgu_suspend(struct device *dev)
> diff --git a/drivers/staging/media/ipu3/ipu3.h
> b/drivers/staging/media/ipu3/ipu3.h
> index 04fc99f47ebb..f732315f0701 100644
> --- a/drivers/staging/media/ipu3/ipu3.h
> +++ b/drivers/staging/med
..b7f11c36461b 100644
> --- a/drivers/staging/media/imx/imx-media.h
> +++ b/drivers/staging/media/imx/imx-media.h
> @@ -226,6 +226,19 @@ int imx_media_add_async_subdev(struct imx_media_dev
> *imxmd,
> struct fwnode_handle *fwnode,
> struct platform_device *pdev);
>
> +int imx_media_subdev_bound(struct v4l2_async_notifier *notifier,
> +struct v4l2_subdev *sd,
> +struct v4l2_async_subdev *asd);
> +int imx_media_link_notify(struct media_link *link, u32 flags,
> + unsigned int notification);
> +int imx_media_probe_complete(struct v4l2_async_notifier *notifier);
> +
> +struct imx_media_dev *imx_media_dev_init(struct device *dev);
> +int imx_media_dev_notifier_register(struct imx_media_dev *imxmd);
> +
> +void imx_media_dev_cleanup(struct imx_media_dev *imxmd);
> +void imx_media_dev_notifier_unregister(struct imx_media_dev *imxmd);
> +
> /* imx-media-fim.c */
> struct imx_media_fim;
> void imx_media_fim_eof_monitor(struct imx_media_fim *fim, ktime_t timestamp);
> @@ -249,6 +262,8 @@ int imx_media_create_of_links(struct imx_media_dev *imxmd,
> struct v4l2_subdev *sd);
> int imx_media_create_csi_of_links(struct imx_media_dev *imxmd,
> struct v4l2_subdev *csi);
> +int imx_media_of_add_csi(struct imx_media_dev *imxmd,
> + struct device_node *csi_np);
>
> /* imx-media-capture.c */
> struct imx_media_video_dev *
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
's patch with equivalent content; it was there first.
Thanks!
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
t; + state->pads);
> + if (ret < 0)
> + goto unregister_subdev;
> +
> + memcpy(state->events, mipi_csis_events, sizeof(state->events));
> +
> + pm_runtime_enable(dev);
> + if (!pm_runtime_enabled(dev)) {
> + ret = mipi_csis_pm_resume(dev, true);
> + if (ret < 0)
> + goto unregister_all;
> + }
> +
> + dev_info(&pdev->dev, "lanes: %d, hs_settle: %d, wclk: %d, freq: %u\n",
> + state->bus.num_data_lanes, state->hs_settle,
> + state->wrap_clk ? 1 : 0, state->clk_frequency);
> + return 0;
> +
> +unregister_all:
> + media_entity_cleanup(&state->mipi_sd.entity);
> +unregister_subdev:
> + v4l2_async_unregister_subdev(&state->mipi_sd);
> +disable_clock:
> + mipi_csis_clk_disable(state);
> +
> + return ret;
> +}
> +
> +static int mipi_csis_pm_suspend(struct device *dev, bool runtime)
> +{
> + struct platform_device *pdev = to_platform_device(dev);
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> + int ret = 0;
> +
> + mutex_lock(&state->lock);
> + if (state->flags & ST_POWERED) {
> + mipi_csis_stop_stream(state);
> + ret = regulator_disable(state->mipi_phy_regulator);
> + if (ret)
> + goto unlock;
> + mipi_csis_clk_disable(state);
> + state->flags &= ~ST_POWERED;
> + if (!runtime)
> + state->flags |= ST_SUSPENDED;
> + }
> +
> + unlock:
> + mutex_unlock(&state->lock);
> +
> + return ret ? -EAGAIN : 0;
> +}
> +
> +static int mipi_csis_pm_resume(struct device *dev, bool runtime)
> +{
> + struct platform_device *pdev = to_platform_device(dev);
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> + int ret = 0;
> +
> + mutex_lock(&state->lock);
> + if (!runtime && !(state->flags & ST_SUSPENDED))
> + goto unlock;
> +
> + if (!(state->flags & ST_POWERED)) {
> + ret = regulator_enable(state->mipi_phy_regulator);
> + if (ret)
> + goto unlock;
> +
> + state->flags |= ST_POWERED;
> + mipi_csis_clk_enable(state);
> + }
> + if (state->flags & ST_STREAMING)
> + mipi_csis_start_stream(state);
> +
> + state->flags &= ~ST_SUSPENDED;
> +
> + unlock:
> + mutex_unlock(&state->lock);
> +
> + return ret ? -EAGAIN : 0;
> +}
> +
> +static int mipi_csis_suspend(struct device *dev)
> +{
> + return mipi_csis_pm_suspend(dev, false);
> +}
> +
> +static int mipi_csis_resume(struct device *dev)
> +{
> + return mipi_csis_pm_resume(dev, false);
> +}
> +
> +static int mipi_csis_runtime_suspend(struct device *dev)
> +{
> + return mipi_csis_pm_suspend(dev, true);
> +}
> +
> +static int mipi_csis_runtime_resume(struct device *dev)
> +{
> + return mipi_csis_pm_resume(dev, true);
> +}
> +
> +static int mipi_csis_remove(struct platform_device *pdev)
> +{
> + struct v4l2_subdev *mipi_sd = platform_get_drvdata(pdev);
> + struct csi_state *state = mipi_sd_to_csis_state(mipi_sd);
> +
> + v4l2_async_unregister_subdev(&state->mipi_sd);
> + v4l2_async_notifier_unregister(&state->subdev_notifier);
> +
> + pm_runtime_disable(&pdev->dev);
> + mipi_csis_pm_suspend(&pdev->dev, true);
> + mipi_csis_clk_disable(state);
> + media_entity_cleanup(&state->mipi_sd.entity);
> + pm_runtime_set_suspended(&pdev->dev);
> +
> + return 0;
> +}
> +
> +static const struct dev_pm_ops mipi_csis_pm_ops = {
> + SET_RUNTIME_PM_OPS(mipi_csis_runtime_suspend, mipi_csis_runtime_resume,
> +NULL)
> + SET_SYSTEM_SLEEP_PM_OPS(mipi_csis_suspend, mipi_csis_resume)
> +};
> +
> +static const struct of_device_id mipi_csis_of_match[] = {
> + { .compatible = "fsl,imx7-mipi-csi2", },
> + { /* sentinel */ },
> +};
> +MODULE_DEVICE_TABLE(of, mipi_csis_of_match);
> +
> +static struct platform_driver mipi_csis_driver = {
> + .probe = mipi_csis_probe,
> + .remove = mipi_csis_remove,
> + .driver = {
> + .of_match_table = mipi_csis_of_match,
> + .name = CSIS_DRIVER_NAME,
> + .pm = &mipi_csis_pm_ops,
> + },
> +};
> +
> +module_platform_driver(mipi_csis_driver);
> +
> +MODULE_DESCRIPTION("i.MX7 MIPI CSI-2 Receiver driver");
> +MODULE_LICENSE("GPL");
> +MODULE_ALIAS("platform:imx7-mipi-csi2");
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
struct v4l2_async_subdev *asd)
> +{
> + return fwnode_device_is_available(asd->match.fwnode) ? 0 : -EINVAL;
> +}
> +
> +static int imx7_csi_parse_dt(struct imx7_csi *csi)
> +{
> + struct device *dev = csi->dev;
> +
> + csi->clk_disp_axi = devm_clk_get
Hi Rui,
On Wed, Nov 21, 2018 at 11:15:51AM +, Rui Miguel Silva wrote:
> Add bindings documentation for i.MX7 media drivers.
> The imx7 MIPI CSI2 and imx7 CMOS Sensor Interface.
>
> Signed-off-by: Rui Miguel Silva
> Reviewed-by: Rob Herring
> Acked-by: Sakari Ailus
>
On Fri, Aug 10, 2018 at 03:20:38PM +0100, Rui Miguel Silva wrote:
> Add bindings documentation for i.MX7 media drivers.
> The imx7 MIPI CSI2 and imx7 CMOS Sensor Interface.
>
> Reviewed-by: Rob Herring
> Signed-off-by: Rui Miguel Silva
Acked-by: Sakari Ailus -
--
Sakari
power-domains = <&pgc_mipi_phy>;
> +phy-supply = <®_1p0d>;
> +resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
> +reset-names = "mrst";
> +fsl,csis-hs-settle = <3>;
> +
> +port@0 {
> +reg = <0>;
> +
> +mipi_from_sensor: endpoint {
> +remote-endpoint = <&ov2680_to_mipi>;
> +data-lanes = <1>;
> +};
> +};
> +
> +port@1 {
> +reg = <1>;
> +
> +mipi_vc0_to_csi_mux: endpoint {
> +remote-endpoint = <&csi_mux_from_mipi_vc0>;
> +};
> +};
> +};
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
ipe_binarydesc.c | 3 ++-
> .../staging/media/atomisp/pci/atomisp2/css2400/sh_css.c| 7 +--
> 5 files changed, 7 insertions(+), 27 deletions(-)
>
I'm sorry to tell you that the atomisp driver was removed from the staging
tree some
On Tue, May 22, 2018 at 02:19:21PM +0100, Rui Miguel Silva wrote:
> Hi Sakari,
> On Fri 18 May 2018 at 22:13, Sakari Ailus wrote:
> > On Fri, May 18, 2018 at 09:27:58AM +0100, Rui Miguel Silva wrote:
> > > > > +endpoint node
> > > > > +---
n by
> table in [0], can you point me out the formula for imx7 in the
> documentation?
I don't know imx7 but the other CSI-2 drivers need no such system specific
configuration.
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
{
> +#address-cells = <1>;
> +#size-cells = <0>;
> +
> +compatible = "fsl,imx7-csi";
> +reg = <0x3071 0x1>;
> +interrupts = ;
> +clocks = <&clks IMX7D_CLK_DUMMY>,
> +<&clks IMX7D_CSI_MCLK_ROOT_CLK>,
> +<&clks IMX7D_CLK_DUMMY>;
> +clock-names = "axi", "mclk", "dcic";
> +
> +port {
> +csi_from_csi_mux: endpoint {
> +remote-endpoint = <&csi_mux_to_csi>;
> +};
> +};
> +};
> --
> 2.17.0
>
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
ck-bindings.txt for
> details;
> +- clock-names : must contain "axi", "mclk" and "dcic" entries, matching
> + entries in the clock property;
> +
> +example:
> +
> +csi: csi@3071 {
> + #address-
r fix so that's
> > fine.
>
> Thanks for your response. From the performance perspective, this bug
> should also be fixed, as the second invocation is redundant if it is
> expected to return a same pointer as the first one.
The arguments are unchanged so the function ret
rid of them, one should start
> getting rid of the several abstraction layers at the driver and have
> hardware for test.
>
> As I don't have any hardware to test, nor any reason why
> dedicating myself to such task, I'll just leave this task for others
> to do.
Tha
On Mon, Mar 26, 2018 at 05:10:35PM -0400, Mauro Carvalho Chehab wrote:
> Use make coccicheck in patch mode to do some coding style
> improvements. Adjust the results manually.
>
> Signed-off-by: Mauro Carvalho Chehab
Hi Mauro,
For patches 2--18, please add:
Acked-by: Sakari Ailus
7;s
patches address problems with functionality, let's make error handling
fixes separately.
So I'm applying these now.
Thanks!
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
DEVICE_ATTR_RO(dynamic_pool);
>
> static struct attribute *sysfs_attrs_ctrl[] = {
> &dev_attr_active_bo.attr,
I have the exact same changes queued up in my tree. As there seem to be no
dependencies to other patches in your set, how about dropping th
On Sat, Dec 02, 2017 at 10:12:01PM +, Jeremy Sowden wrote:
> Removing zero-valued struct-members left a number of the default
> struct-values empty. These values have now been removed.
>
> Signed-off-by: Jeremy Sowden
This one should be squashed as well.
--
Sakari Ailus
e-mai
in an assignment expression.
>
> Signed-off-by: Jeremy Sowden
I don't think it's useful to change the struct definition macros only to
remove a large number of assigned fields in the next patch. How about
merging the two patches?
Please also start a new thread when re-posting a set.
lwester Nawrocki
> Signed-off-by: Mauro Carvalho Chehab
I'm not sure this is needed but it doesn't break anything either.
Feel free to add:
Acked-by: Sakari Ailus
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@
On Wed, Nov 29, 2017 at 10:28:26AM -0200, Mauro Carvalho Chehab wrote:
> Em Wed, 29 Nov 2017 10:24:57 -0200
> Mauro Carvalho Chehab escreveu:
>
> > Em Wed, 29 Nov 2017 14:14:54 +0200
> > Sakari Ailus escreveu:
> >
> > > Hi Mauro,
> > >
> >
ters.
It'd be good to mention how it's been generated.
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
On Wed, Nov 29, 2017 at 10:15:06AM +0100, Greg KH wrote:
> On Wed, Nov 29, 2017 at 11:08:17AM +0200, Sakari Ailus wrote:
> > Hi Greg,
> >
> > On Mon, Nov 27, 2017 at 01:21:25PM +0100, Greg KH wrote:
> > > On Mon, Nov 27, 2017 at 11:30:53AM +, Jeremy Sowden wrote:
ia tree. To avoid
conflicts, I suggest to avoid merging them via the staging tree.
Thanks.
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
ngs.
>
> .../isp/kernels/eed1_8/ia_css_eed1_8.host.c| 24
> +++---
> .../isp_param/interface/ia_css_isp_param_types.h | 2 +-
> 2 files changed, 13 insertions(+), 13 deletions(-)
Thanks, applied!
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi
__
On Mon, Nov 27, 2017 at 11:30:54AM +, Jeremy Sowden wrote:
> Signed-off-by: Jeremy Sowden
I'd just leave it as-is, int16_t is a standard type. The commit message
would be needed, too.
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel
pplying the rest of the patch.
Please use the media tree as the base in the future. Thanks.
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
On Tue, Oct 17, 2017 at 08:16:03AM -0700, Kees Cook wrote:
> On Tue, Oct 17, 2017 at 1:23 AM, Sakari Ailus wrote:
> > On Mon, Oct 16, 2017 at 04:24:56PM -0700, Kees Cook wrote:
> >> In preparation for unconditionally passing the struct timer_list pointer to
> >> all
est for the branch.
Could you rebase your patches on this branch, please?
https://git.linuxtv.org/sailus/media_tree.git/log/?h=atomisp-next>
Normally it'll be "atomisp".
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
_
> > +
> > if (on) {
> > ret = clk_set_rate(gs->pmc_clk, gs->clock_src);
>
> Which tree [and branch] are you working off please? In the staging-next
> branch of Greg's staging
> tree this function does not appear as it is in this pat
hab
> Cc: Greg Kroah-Hartman
> Cc: Alan Cox
> Cc: Daeseok Youn
> Cc: Arnd Bergmann
> Cc: linux-me...@vger.kernel.org
> Cc: de...@driverdev.osuosl.org
> Signed-off-by: Kees Cook
This appears to be the same as the patch I've applied previously.
--
gt;
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
either V4L2 framework or
sensor driver changes to support atomisp, which currently is a staging
driver.
--
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
;m tempted to postpone applying this patch at least until
the other drivers are available.
Andy, Alan; any opinion?
--
Kind regards,
Sakari Ailus
sakari.ai...@linux.intel.com
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
Hi Mauro,
(Removing the non-list recipients.)
On Fri, Sep 29, 2017 at 06:27:13AM -0300, Mauro Carvalho Chehab wrote:
> Em Thu, 28 Sep 2017 15:09:21 +0300
> Sakari Ailus escreveu:
>
> > Hi Mauro,
> >
> > On Wed, Sep 27, 2017 at 06:46:56PM -0300, Mauro Carva
interface with that name, fwnode property API is just an API.
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
interface with that name, fwnode property API is just an API.
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
interface with that name, fwnode property API is just an API.
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
applied the patch with small changes, there were other patches
changing the deleted files.
The tree is here:
https://git.linuxtv.org/sailus/media_tree.git/log/?h=atomisp>
--
Kind regards,
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
d
ubject line) at least. This case is a bit
special because the other driver is also specific to the atomisp staging
driver.
Thanks.
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
ia_css_state_memory_offsets);
>
> - char *parambuf = (char *)kmalloc(paramstruct_size +
> configstruct_size + statestruct_size,
> + char *parambuf = kmalloc(paramstruct_size + configstruct_size +
> statestruct_size,
>
Hi Devid,
Please see my comments below.
Andy: please look for "INT5648".
On Sun, Sep 10, 2017 at 02:23:07PM +0200, Devid Antonio Floni wrote:
> The ov5680 5-megapixel camera sensor from OmniVision supports up to 2592x1944
> resolution and MIPI CSI-2 interface. Output format is raw sRGB/Bayer wit
ev structures
These structures are both stored in fields of v4l2_subdev_ops
structures, all of which are const, so these structures can be
const as well.
Done with the help of Coccinelle.
Signed-off-by: Julia Lawall
Signed-off-by: Mauro Carvalho Chehab
--
Sa
driver chip that drives a single flash LED and an indicator LED is no
longer valid.
Address the matter by registering one sub-device per LED.
Signed-off-by: Sakari Ailus
Reviewed-by: Jacek Anaszewski
Acked-by: Pavel Machek
Reviewed-by: Rui Miguel Silva (for greybus/light)
Acked-by: Hans
driver chip that drives a single flash LED and an indicator LED is no
longer valid.
Address the matter by registering one sub-device per LED.
Signed-off-by: Sakari Ailus
Reviewed-by: Jacek Anaszewski
Acked-by: Pavel Machek
Reviewed-by: Rui Miguel Silva (for greybus/light)
Acked-by: Hans
never returns NULL.
Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
Reported-by: Sakari Ailus
Signed-off-by: Rui Miguel Silva
Reviewed-by: Viresh Kumar
Signed-off-by: Sakari Ailus
Acked-by: Hans Verkuil
---
drivers/staging/greybus/li
v_flash for
indicator" already in mediatree.
- Add "v4l2-flash-led-class: Document v4l2_flash_init() references" to the
set.
Rui Miguel Silva (1):
staging: greybus: light: fix memory leak in v4l2 register
Sakari Ailus (2):
v4l2-flash-led-class: Create separate sub-devi
The v4l2_flash_init() keeps a reference to the ops struct but not to the
config struct (nor anything it contains). Document this.
Signed-off-by: Sakari Ailus
Acked-by: Pavel Machek
Acked-by: Hans Verkuil
---
include/media/v4l2-flash-led-class.h | 6 ++
1 file changed, 6 insertions
driver chip that drives a single flash LED and an indicator LED is no
longer valid.
Address the matter by registering one sub-device per LED.
Signed-off-by: Sakari Ailus
Reviewed-by: Jacek Anaszewski
Acked-by: Pavel Machek
Reviewed-by: Rui Miguel Silva (for greybus/light)
Acked-by: Hans
t = PTR_ERR(light->v4l2_flash);
> > - goto out_free;
> > - }
> > + &v4l2_flash_ops, &sd_cfg);
> > + if (IS_ERR_OR_NULL(light->v4l2_flash))
>
> Just IS_ERR since v4l2_flash_init() never returns NULL.
Will fix.
&
as a single patch instead. And do continue paying attention to
commit message subject and body.
Thanks.
--
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linux
contains exposure settings and face
> + * detection results.
> + */
/*
* Multi-line comments
* look like this.
*/
> static u16 ap1302_ss_list[] = {
> 0xb01c, /* From 0x0186 with size 0x1C are exposure settings. */
> 0x0186,
> --
> 2.1.4
lready includes a copy of the GPL.
Applied, with the subject line changed to "staging: media: atomisp: ap1302:
Remove FSF postal address" and "CHECK: " removed. Please look e.g. git log
on the atomisp driver for subject examples in the future.
Thanks.
--
Sakari Ailus
e-ma
Hi Rui,
On Wed, Aug 09, 2017 at 02:20:02PM +0100, Rui Miguel Silva wrote:
> Hi Sakari,
> On Wed, Aug 09, 2017 at 02:15:53PM +0300, Sakari Ailus wrote:
> > From: Rui Miguel Silva
> >
> > We are allocating memory for the v4l2 flash configuration structure and
> > le
dd "v4l2-flash-led-class: Document v4l2_flash_init() references" to the
set.
Rui Miguel Silva (1):
staging: greybus: light: fix memory leak in v4l2 register
Sakari Ailus (2):
v4l2-flash-led-class: Create separate sub-devices for indicators
v4l2-flash-led-class: Documen
From: Rui Miguel Silva
We are allocating memory for the v4l2 flash configuration structure and
leak it in the normal path. Just use the stack for this as we do not
use it outside of this function.
Fixes: 2870b52bae4c ("greybus: lights: add lights implementation")
Reported-by: Sa
The v4l2_flash_init() keeps a reference to the ops struct but not to the
config struct (nor anything it contains). Document this.
Signed-off-by: Sakari Ailus
Acked-by: Pavel Machek
---
include/media/v4l2-flash-led-class.h | 6 ++
1 file changed, 6 insertions(+)
diff --git a/include/media
driver chip that drives a single flash LED and an indicator LED is no
longer valid.
Address the matter by registering one sub-device per LED.
Signed-off-by: Sakari Ailus
Reviewed-by: Jacek Anaszewski
Acked-by: Pavel Machek
---
drivers/leds/leds-aat1290.c| 4 +-
drivers
1 - 100 of 169 matches
Mail list logo