media fixes for v6.4-rc5
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAmR8hVgACgkQCF8+vY7k 4RXDRg//SxDkN3JSKKUuNzBBYI7KJkEXE/G7rsA0DZmgBS90ri8lop6psw1dq7pY PgffWc01YKJqWK9Tz6V8ejn9jFo7YAAiTwYqitwOxEfsF5r+2yLV0lfSGU7OhYAP m/CwSbsL78RU8YAcAXJm1K8UJu/NDHKcJQiroCDAJanw5W1dvKx42flE0kw6g9YY CqanR3XuiqUxq4XDzUoN86VHIUk97AhRDeCi9E4hpYJgMHuxQPoRd71/vuA15KYD H2d/Xh/jJ+qNtPnO/Ivgy43Ueb6qVvbjr5uNevFtPghJ8ATsP+a/dwBeprqMuuX5 k5jWfNTNiT0VHWVG0ruOsGMpq6NCUXXVt5IHAaLWiuGh8RQrnn1JfEkMvYqiu5ar /4Z55Fl6qU2760N/PVLUwskcDnGNOKSTAKSPBZg3hj4jn5eCwQIkAysEt8BULiLs SdyOODiqH8r+g2j6JXFqRWl9sV7jH6cV+ZaNW6mbfCyRIJdJ25W1C3yKIDK/G3dG qBj1dm0uLd7ufvdSwgNW2LwLFH4a8sHXELfij603K3ysO/NZfdlzgY+6rDuv3w2P OiHNtMTig0O4TImIELjJlxOsb3bSsaM3tPBSdCl0KC0kkMT8U+7rqXZFfCvYqKUV uwvUnfmu6dx2CfVIPEep90Vnsr1rtIL+ZPqut1x5LfFrVYuTYrE= =hLQn -----END PGP SIGNATURE----- Merge tag 'media/v6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media fixes from Mauro Carvalho Chehab: "Some driver fixes: - a regression fix for the verisilicon driver - uvcvideo: don't expose unsupported video formats to userspace - camss-video: don't zero subdev format after init - mediatek: some fixes for 4K decoder formats - fix a Sphinx build warning (missing doc for client_caps) - some fixes for imx and atomisp staging drivers And two CEC core fixes: - don't set last_initiator if TX in progress - disable adapter in cec_devnode_unregister" * tag 'media/v6.4-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: media: uvcvideo: Don't expose unsupported formats to userspace media: v4l2-subdev: Fix missing kerneldoc for client_caps media: staging: media: imx: initialize hs_settle to avoid warning media: v4l2-mc: Drop subdev check in v4l2_create_fwnode_links_to_pad() media: staging: media: atomisp: init high & low vars media: cec: core: don't set last_initiator if tx in progress media: cec: core: disable adapter in cec_devnode_unregister media: mediatek: vcodec: Only apply 4K frame sizes on decoder formats media: camss: camss-video: Don't zero subdev format again after initialization media: verisilicon: Additional fix for the crash when opening the driver
This commit is contained in:
Коммит
5e89d62ec1
|
@ -1091,7 +1091,8 @@ void cec_received_msg_ts(struct cec_adapter *adap,
|
|||
mutex_lock(&adap->lock);
|
||||
dprintk(2, "%s: %*ph\n", __func__, msg->len, msg->msg);
|
||||
|
||||
adap->last_initiator = 0xff;
|
||||
if (!adap->transmit_in_progress)
|
||||
adap->last_initiator = 0xff;
|
||||
|
||||
/* Check if this message was for us (directed or broadcast). */
|
||||
if (!cec_msg_is_broadcast(msg)) {
|
||||
|
@ -1585,7 +1586,7 @@ static void cec_claim_log_addrs(struct cec_adapter *adap, bool block)
|
|||
*
|
||||
* This function is called with adap->lock held.
|
||||
*/
|
||||
static int cec_adap_enable(struct cec_adapter *adap)
|
||||
int cec_adap_enable(struct cec_adapter *adap)
|
||||
{
|
||||
bool enable;
|
||||
int ret = 0;
|
||||
|
@ -1595,6 +1596,9 @@ static int cec_adap_enable(struct cec_adapter *adap)
|
|||
if (adap->needs_hpd)
|
||||
enable = enable && adap->phys_addr != CEC_PHYS_ADDR_INVALID;
|
||||
|
||||
if (adap->devnode.unregistered)
|
||||
enable = false;
|
||||
|
||||
if (enable == adap->is_enabled)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -191,6 +191,8 @@ static void cec_devnode_unregister(struct cec_adapter *adap)
|
|||
mutex_lock(&adap->lock);
|
||||
__cec_s_phys_addr(adap, CEC_PHYS_ADDR_INVALID, false);
|
||||
__cec_s_log_addrs(adap, NULL, false);
|
||||
// Disable the adapter (since adap->devnode.unregistered is true)
|
||||
cec_adap_enable(adap);
|
||||
mutex_unlock(&adap->lock);
|
||||
|
||||
cdev_device_del(&devnode->cdev, &devnode->dev);
|
||||
|
|
|
@ -47,6 +47,7 @@ int cec_monitor_pin_cnt_inc(struct cec_adapter *adap);
|
|||
void cec_monitor_pin_cnt_dec(struct cec_adapter *adap);
|
||||
int cec_adap_status(struct seq_file *file, void *priv);
|
||||
int cec_thread_func(void *_adap);
|
||||
int cec_adap_enable(struct cec_adapter *adap);
|
||||
void __cec_s_phys_addr(struct cec_adapter *adap, u16 phys_addr, bool block);
|
||||
int __cec_s_log_addrs(struct cec_adapter *adap,
|
||||
struct cec_log_addrs *log_addrs, bool block);
|
||||
|
|
|
@ -584,6 +584,9 @@ static void mtk_init_vdec_params(struct mtk_vcodec_ctx *ctx)
|
|||
|
||||
if (!(ctx->dev->dec_capability & VCODEC_CAPABILITY_4K_DISABLED)) {
|
||||
for (i = 0; i < num_supported_formats; i++) {
|
||||
if (mtk_video_formats[i].type != MTK_FMT_DEC)
|
||||
continue;
|
||||
|
||||
mtk_video_formats[i].frmsize.max_width =
|
||||
VCODEC_DEC_4K_CODED_WIDTH;
|
||||
mtk_video_formats[i].frmsize.max_height =
|
||||
|
|
|
@ -353,7 +353,6 @@ static int video_get_subdev_format(struct camss_video *video,
|
|||
if (subdev == NULL)
|
||||
return -EPIPE;
|
||||
|
||||
memset(&fmt, 0, sizeof(fmt));
|
||||
fmt.pad = pad;
|
||||
|
||||
ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &fmt);
|
||||
|
|
|
@ -397,10 +397,12 @@ hantro_reset_raw_fmt(struct hantro_ctx *ctx, int bit_depth)
|
|||
if (!raw_vpu_fmt)
|
||||
return -EINVAL;
|
||||
|
||||
if (ctx->is_encoder)
|
||||
if (ctx->is_encoder) {
|
||||
encoded_fmt = &ctx->dst_fmt;
|
||||
else
|
||||
ctx->vpu_src_fmt = raw_vpu_fmt;
|
||||
} else {
|
||||
encoded_fmt = &ctx->src_fmt;
|
||||
}
|
||||
|
||||
hantro_reset_fmt(&raw_fmt, raw_vpu_fmt);
|
||||
raw_fmt.width = encoded_fmt->width;
|
||||
|
|
|
@ -251,14 +251,17 @@ static int uvc_parse_format(struct uvc_device *dev,
|
|||
/* Find the format descriptor from its GUID. */
|
||||
fmtdesc = uvc_format_by_guid(&buffer[5]);
|
||||
|
||||
if (fmtdesc != NULL) {
|
||||
format->fcc = fmtdesc->fcc;
|
||||
} else {
|
||||
if (!fmtdesc) {
|
||||
/*
|
||||
* Unknown video formats are not fatal errors, the
|
||||
* caller will skip this descriptor.
|
||||
*/
|
||||
dev_info(&streaming->intf->dev,
|
||||
"Unknown video format %pUl\n", &buffer[5]);
|
||||
format->fcc = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
format->fcc = fmtdesc->fcc;
|
||||
format->bpp = buffer[21];
|
||||
|
||||
/*
|
||||
|
@ -675,7 +678,7 @@ static int uvc_parse_streaming(struct uvc_device *dev,
|
|||
interval = (u32 *)&frame[nframes];
|
||||
|
||||
streaming->format = format;
|
||||
streaming->nformats = nformats;
|
||||
streaming->nformats = 0;
|
||||
|
||||
/* Parse the format descriptors. */
|
||||
while (buflen > 2 && buffer[1] == USB_DT_CS_INTERFACE) {
|
||||
|
@ -689,7 +692,10 @@ static int uvc_parse_streaming(struct uvc_device *dev,
|
|||
&interval, buffer, buflen);
|
||||
if (ret < 0)
|
||||
goto error;
|
||||
if (!ret)
|
||||
break;
|
||||
|
||||
streaming->nformats++;
|
||||
frame += format->nframes;
|
||||
format++;
|
||||
|
||||
|
|
|
@ -314,8 +314,7 @@ int v4l2_create_fwnode_links_to_pad(struct v4l2_subdev *src_sd,
|
|||
{
|
||||
struct fwnode_handle *endpoint;
|
||||
|
||||
if (!(sink->flags & MEDIA_PAD_FL_SINK) ||
|
||||
!is_media_entity_v4l2_subdev(sink->entity))
|
||||
if (!(sink->flags & MEDIA_PAD_FL_SINK))
|
||||
return -EINVAL;
|
||||
|
||||
fwnode_graph_for_each_endpoint(dev_fwnode(src_sd->dev), endpoint) {
|
||||
|
|
|
@ -373,7 +373,7 @@ static int ov2680_get_fmt(struct v4l2_subdev *sd,
|
|||
static int ov2680_detect(struct i2c_client *client)
|
||||
{
|
||||
struct i2c_adapter *adapter = client->adapter;
|
||||
u32 high, low;
|
||||
u32 high = 0, low = 0;
|
||||
int ret;
|
||||
u16 id;
|
||||
u8 revision;
|
||||
|
@ -383,7 +383,7 @@ static int ov2680_detect(struct i2c_client *client)
|
|||
|
||||
ret = ov_read_reg8(client, OV2680_SC_CMMN_CHIP_ID_H, &high);
|
||||
if (ret) {
|
||||
dev_err(&client->dev, "sensor_id_high = 0x%x\n", high);
|
||||
dev_err(&client->dev, "sensor_id_high read failed (%d)\n", ret);
|
||||
return -ENODEV;
|
||||
}
|
||||
ret = ov_read_reg8(client, OV2680_SC_CMMN_CHIP_ID_L, &low);
|
||||
|
|
|
@ -354,7 +354,7 @@ static int imx8mq_mipi_csi_start_stream(struct csi_state *state,
|
|||
struct v4l2_subdev_state *sd_state)
|
||||
{
|
||||
int ret;
|
||||
u32 hs_settle;
|
||||
u32 hs_settle = 0;
|
||||
|
||||
ret = imx8mq_mipi_csi_sw_reset(state);
|
||||
if (ret)
|
||||
|
|
|
@ -1119,6 +1119,7 @@ struct v4l2_subdev {
|
|||
* @vfh: pointer to &struct v4l2_fh
|
||||
* @state: pointer to &struct v4l2_subdev_state
|
||||
* @owner: module pointer to the owner of this file handle
|
||||
* @client_caps: bitmask of ``V4L2_SUBDEV_CLIENT_CAP_*``
|
||||
*/
|
||||
struct v4l2_subdev_fh {
|
||||
struct v4l2_fh vfh;
|
||||
|
|
Загрузка…
Ссылка в новой задаче