Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'media/v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media fixes from Mauro Carvalho Chehab:

- a fix for the media controller links in both hantro driver and in
v4l2-mem2mem core

- some fixes for the pulse8-cec driver

- vicodec: handle alpha channel for RGB32 formats, as it may be used

- mc-entity.c: fix handling of pad flags

* tag 'media/v5.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
media: hantro: Fix broken media controller links
media: mc-entity.c: use & to check pad flags, not ==
media: v4l2-mem2mem.c: fix broken links
media: vicodec: process all 4 components for RGB32 formats
media: pulse8-cec: close serio in disconnect, not adap_free
media: pulse8-cec: INIT_DELAYED_WORK was called too late

+22 -36
+2 -2
drivers/media/mc/mc-entity.c
··· 639 639 return -EINVAL; 640 640 641 641 for (i = 0; i < entity->num_pads; i++) { 642 - if (entity->pads[i].flags == MEDIA_PAD_FL_SINK) 642 + if (entity->pads[i].flags & MEDIA_PAD_FL_SINK) 643 643 pad_is_sink = true; 644 - else if (entity->pads[i].flags == MEDIA_PAD_FL_SOURCE) 644 + else if (entity->pads[i].flags & MEDIA_PAD_FL_SOURCE) 645 645 pad_is_sink = false; 646 646 else 647 647 continue; /* This is an error! */
+9 -25
drivers/media/platform/vicodec/codec-v4l2-fwht.c
··· 27 27 { V4L2_PIX_FMT_BGR24, 3, 3, 1, 3, 3, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 28 28 { V4L2_PIX_FMT_RGB24, 3, 3, 1, 3, 3, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 29 29 { V4L2_PIX_FMT_HSV24, 3, 3, 1, 3, 3, 1, 1, 3, 1, FWHT_FL_PIXENC_HSV}, 30 - { V4L2_PIX_FMT_BGR32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 31 - { V4L2_PIX_FMT_XBGR32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 30 + { V4L2_PIX_FMT_BGR32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 31 + { V4L2_PIX_FMT_XBGR32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 32 32 { V4L2_PIX_FMT_ABGR32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 33 - { V4L2_PIX_FMT_RGB32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 34 - { V4L2_PIX_FMT_XRGB32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 33 + { V4L2_PIX_FMT_RGB32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 34 + { V4L2_PIX_FMT_XRGB32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 35 35 { V4L2_PIX_FMT_ARGB32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 36 - { V4L2_PIX_FMT_BGRX32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 36 + { V4L2_PIX_FMT_BGRX32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 37 37 { V4L2_PIX_FMT_BGRA32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 38 - { V4L2_PIX_FMT_RGBX32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_RGB}, 38 + { V4L2_PIX_FMT_RGBX32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 39 39 { V4L2_PIX_FMT_RGBA32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_RGB}, 40 - { V4L2_PIX_FMT_HSV32, 4, 4, 1, 4, 4, 1, 1, 3, 1, FWHT_FL_PIXENC_HSV}, 40 + { V4L2_PIX_FMT_HSV32, 4, 4, 1, 4, 4, 1, 1, 4, 1, FWHT_FL_PIXENC_HSV}, 41 41 { V4L2_PIX_FMT_GREY, 1, 1, 1, 1, 0, 1, 1, 1, 1, FWHT_FL_PIXENC_RGB}, 42 42 }; 43 43 ··· 175 175 case V4L2_PIX_FMT_RGB32: 176 176 case V4L2_PIX_FMT_XRGB32: 177 177 case V4L2_PIX_FMT_HSV32: 178 - rf->cr = rf->luma + 1; 179 - rf->cb = rf->cr + 2; 180 - rf->luma += 2; 181 - break; 182 - case V4L2_PIX_FMT_BGR32: 183 - case V4L2_PIX_FMT_XBGR32: 184 - rf->cb = rf->luma; 185 - rf->cr = rf->cb + 2; 186 - rf->luma++; 187 - break; 188 178 case V4L2_PIX_FMT_ARGB32: 189 179 rf->alpha = rf->luma; 190 180 rf->cr = rf->luma + 1; 191 181 rf->cb = rf->cr + 2; 192 182 rf->luma += 2; 193 183 break; 184 + case V4L2_PIX_FMT_BGR32: 185 + case V4L2_PIX_FMT_XBGR32: 194 186 case V4L2_PIX_FMT_ABGR32: 195 187 rf->cb = rf->luma; 196 188 rf->cr = rf->cb + 2; ··· 190 198 rf->alpha = rf->cr + 1; 191 199 break; 192 200 case V4L2_PIX_FMT_BGRX32: 193 - rf->cb = rf->luma + 1; 194 - rf->cr = rf->cb + 2; 195 - rf->luma += 2; 196 - break; 197 201 case V4L2_PIX_FMT_BGRA32: 198 202 rf->alpha = rf->luma; 199 203 rf->cb = rf->luma + 1; ··· 197 209 rf->luma += 2; 198 210 break; 199 211 case V4L2_PIX_FMT_RGBX32: 200 - rf->cr = rf->luma; 201 - rf->cb = rf->cr + 2; 202 - rf->luma++; 203 - break; 204 212 case V4L2_PIX_FMT_RGBA32: 205 213 rf->alpha = rf->luma + 3; 206 214 rf->cr = rf->luma;
+7 -5
drivers/media/usb/pulse8-cec/pulse8-cec.c
··· 635 635 cancel_delayed_work_sync(&pulse8->ping_eeprom_work); 636 636 cancel_work_sync(&pulse8->irq_work); 637 637 cancel_work_sync(&pulse8->tx_work); 638 - serio_close(pulse8->serio); 639 - serio_set_drvdata(pulse8->serio, NULL); 640 638 kfree(pulse8); 641 639 } 642 640 ··· 650 652 struct pulse8 *pulse8 = serio_get_drvdata(serio); 651 653 652 654 cec_unregister_adapter(pulse8->adap); 655 + pulse8->serio = NULL; 656 + serio_set_drvdata(serio, NULL); 657 + serio_close(serio); 653 658 } 654 659 655 660 static int pulse8_setup(struct pulse8 *pulse8, struct serio *serio, ··· 841 840 serio_set_drvdata(serio, pulse8); 842 841 INIT_WORK(&pulse8->irq_work, pulse8_irq_work_handler); 843 842 INIT_WORK(&pulse8->tx_work, pulse8_tx_work_handler); 843 + INIT_DELAYED_WORK(&pulse8->ping_eeprom_work, 844 + pulse8_ping_eeprom_work_handler); 844 845 mutex_init(&pulse8->lock); 845 846 spin_lock_init(&pulse8->msg_lock); 846 847 pulse8->config_pending = false; ··· 868 865 pulse8->restoring_config = true; 869 866 } 870 867 871 - INIT_DELAYED_WORK(&pulse8->ping_eeprom_work, 872 - pulse8_ping_eeprom_work_handler); 873 868 schedule_delayed_work(&pulse8->ping_eeprom_work, PING_PERIOD); 874 869 875 870 return 0; 876 871 877 872 close_serio: 873 + pulse8->serio = NULL; 874 + serio_set_drvdata(serio, NULL); 878 875 serio_close(serio); 879 876 delete_adap: 880 877 cec_delete_adapter(pulse8->adap); 881 - serio_set_drvdata(serio, NULL); 882 878 free_device: 883 879 kfree(pulse8); 884 880 return err;
+2 -2
drivers/media/v4l2-core/v4l2-mem2mem.c
··· 880 880 goto err_rel_entity1; 881 881 882 882 /* Connect the three entities */ 883 - ret = media_create_pad_link(m2m_dev->source, 0, &m2m_dev->proc, 1, 883 + ret = media_create_pad_link(m2m_dev->source, 0, &m2m_dev->proc, 0, 884 884 MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); 885 885 if (ret) 886 886 goto err_rel_entity2; 887 887 888 - ret = media_create_pad_link(&m2m_dev->proc, 0, &m2m_dev->sink, 0, 888 + ret = media_create_pad_link(&m2m_dev->proc, 1, &m2m_dev->sink, 0, 889 889 MEDIA_LNK_FL_IMMUTABLE | MEDIA_LNK_FL_ENABLED); 890 890 if (ret) 891 891 goto err_rm_links0;
+2 -2
drivers/staging/media/hantro/hantro_drv.c
··· 558 558 goto err_rel_entity1; 559 559 560 560 /* Connect the three entities */ 561 - ret = media_create_pad_link(&func->vdev.entity, 0, &func->proc, 1, 561 + ret = media_create_pad_link(&func->vdev.entity, 0, &func->proc, 0, 562 562 MEDIA_LNK_FL_IMMUTABLE | 563 563 MEDIA_LNK_FL_ENABLED); 564 564 if (ret) 565 565 goto err_rel_entity2; 566 566 567 - ret = media_create_pad_link(&func->proc, 0, &func->sink, 0, 567 + ret = media_create_pad_link(&func->proc, 1, &func->sink, 0, 568 568 MEDIA_LNK_FL_IMMUTABLE | 569 569 MEDIA_LNK_FL_ENABLED); 570 570 if (ret)