mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
Merge tag 'media/v6.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media fixes from Mauro Carvalho Chehab: - a core fix: Don't report V4L2_SUBDEV_CAP_STREAMS when API is disabled - ipu-bridge: Add a missing acpi_dev_put() - ov8858: fix driver for probe to work after 6.6-rc1 - xilinx-vipp: fix async notifier logic * tag 'media/v6.6-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: media: i2c: ov8858: Don't set fwnode in the driver media: ipu-bridge: Add missing acpi_dev_put() in ipu_bridge_get_ivsc_acpi_dev() media: xilinx-vipp: Look for entities also in waiting_list media: subdev: Don't report V4L2_SUBDEV_CAP_STREAMS when the streams API is disabled
This commit is contained in:
@@ -1850,9 +1850,9 @@ static int ov8858_parse_of(struct ov8858 *ov8858)
|
||||
}
|
||||
|
||||
ret = v4l2_fwnode_endpoint_parse(endpoint, &vep);
|
||||
fwnode_handle_put(endpoint);
|
||||
if (ret) {
|
||||
dev_err(dev, "Failed to parse endpoint: %d\n", ret);
|
||||
fwnode_handle_put(endpoint);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1864,12 +1864,9 @@ static int ov8858_parse_of(struct ov8858 *ov8858)
|
||||
default:
|
||||
dev_err(dev, "Unsupported number of data lanes %u\n",
|
||||
ov8858->num_lanes);
|
||||
fwnode_handle_put(endpoint);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ov8858->subdev.fwnode = endpoint;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1913,7 +1910,7 @@ static int ov8858_probe(struct i2c_client *client)
|
||||
|
||||
ret = ov8858_init_ctrls(ov8858);
|
||||
if (ret)
|
||||
goto err_put_fwnode;
|
||||
return ret;
|
||||
|
||||
sd = &ov8858->subdev;
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
|
||||
@@ -1964,8 +1961,6 @@ static int ov8858_probe(struct i2c_client *client)
|
||||
media_entity_cleanup(&sd->entity);
|
||||
err_free_handler:
|
||||
v4l2_ctrl_handler_free(&ov8858->ctrl_handler);
|
||||
err_put_fwnode:
|
||||
fwnode_handle_put(ov8858->subdev.fwnode);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1978,7 +1973,6 @@ static void ov8858_remove(struct i2c_client *client)
|
||||
v4l2_async_unregister_subdev(sd);
|
||||
media_entity_cleanup(&sd->entity);
|
||||
v4l2_ctrl_handler_free(&ov8858->ctrl_handler);
|
||||
fwnode_handle_put(ov8858->subdev.fwnode);
|
||||
|
||||
pm_runtime_disable(&client->dev);
|
||||
if (!pm_runtime_status_suspended(&client->dev))
|
||||
|
||||
@@ -107,8 +107,10 @@ static struct acpi_device *ipu_bridge_get_ivsc_acpi_dev(struct acpi_device *adev
|
||||
for_each_acpi_dev_match(ivsc_adev, acpi_id->id, NULL, -1)
|
||||
/* camera sensor depends on IVSC in DSDT if exist */
|
||||
for_each_acpi_consumer_dev(ivsc_adev, consumer)
|
||||
if (consumer->handle == handle)
|
||||
if (consumer->handle == handle) {
|
||||
acpi_dev_put(consumer);
|
||||
return ivsc_adev;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -55,11 +55,18 @@ xvip_graph_find_entity(struct xvip_composite_device *xdev,
|
||||
{
|
||||
struct xvip_graph_entity *entity;
|
||||
struct v4l2_async_connection *asd;
|
||||
struct list_head *lists[] = {
|
||||
&xdev->notifier.done_list,
|
||||
&xdev->notifier.waiting_list
|
||||
};
|
||||
unsigned int i;
|
||||
|
||||
list_for_each_entry(asd, &xdev->notifier.done_list, asc_entry) {
|
||||
entity = to_xvip_entity(asd);
|
||||
if (entity->asd.match.fwnode == fwnode)
|
||||
return entity;
|
||||
for (i = 0; i < ARRAY_SIZE(lists); i++) {
|
||||
list_for_each_entry(asd, lists[i], asc_entry) {
|
||||
entity = to_xvip_entity(asd);
|
||||
if (entity->asd.match.fwnode == fwnode)
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
||||
@@ -502,6 +502,13 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
|
||||
V4L2_SUBDEV_CLIENT_CAP_STREAMS;
|
||||
int rval;
|
||||
|
||||
/*
|
||||
* If the streams API is not enabled, remove V4L2_SUBDEV_CAP_STREAMS.
|
||||
* Remove this when the API is no longer experimental.
|
||||
*/
|
||||
if (!v4l2_subdev_enable_streams_api)
|
||||
streams_subdev = false;
|
||||
|
||||
switch (cmd) {
|
||||
case VIDIOC_SUBDEV_QUERYCAP: {
|
||||
struct v4l2_subdev_capability *cap = arg;
|
||||
|
||||
Reference in New Issue
Block a user