From: kbuild test robot <lkp@intel.com>
To: kbuild@01.org, Michael Tretter <m.tretter@pengutronix.de>
Cc: Dan Carpenter <dan.carpenter@oracle.com>,
kbuild-all@01.org, linux-media@vger.kernel.org,
devicetree@vger.kernel.org, kernel@pengutronix.de,
robh+dt@kernel.org, mchehab@kernel.org, tfiga@chromium.org,
Michael Tretter <m.tretter@pengutronix.de>
Subject: Re: [PATCH 2/3] [media] allegro: add Allegro DVT video IP core driver
Date: Thu, 10 Jan 2019 22:49:25 +0300 [thread overview]
Message-ID: <20190110194925.GI1718@kadam> (raw)
In-Reply-To: <20190109113037.28430-3-m.tretter@pengutronix.de>
Hi Michael,
url: https://github.com/0day-ci/linux/commits/Michael-Tretter/Add-ZynqMP-VCU-Allegro-DVT-H-264-encoder-driver/20190110-020930
base: git://linuxtv.org/media_tree.git master
smatch warnings:
drivers/staging/media/allegro-dvt/allegro-core.c:616 allegro_mbox_write() error: uninitialized symbol 'err'.
drivers/staging/media/allegro-dvt/allegro-core.c:743 v4l2_profile_to_mcu_profile() warn: signedness bug returning '(-22)'
drivers/staging/media/allegro-dvt/allegro-core.c:753 v4l2_level_to_mcu_level() warn: signedness bug returning '(-22)'
drivers/staging/media/allegro-dvt/allegro-core.c:1162 allegro_receive_message() warn: struct type mismatch 'mcu_msg_header vs mcu_msg_encode_one_frm_response'
# https://github.com/0day-ci/linux/commit/573e9a62ef9a92c1f26f120a89aba1514b97b2b2
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 573e9a62ef9a92c1f26f120a89aba1514b97b2b2
vim +/err +616 drivers/staging/media/allegro-dvt/allegro-core.c
573e9a62 Michael Tretter 2019-01-09 568
573e9a62 Michael Tretter 2019-01-09 569 static int allegro_mbox_write(struct allegro_dev *dev,
573e9a62 Michael Tretter 2019-01-09 570 struct allegro_mbox *mbox, void *src, size_t size)
573e9a62 Michael Tretter 2019-01-09 571 {
573e9a62 Michael Tretter 2019-01-09 572 struct mcu_msg_header *header = src;
573e9a62 Michael Tretter 2019-01-09 573 unsigned int tail;
573e9a62 Michael Tretter 2019-01-09 574 size_t size_no_wrap;
573e9a62 Michael Tretter 2019-01-09 575 int err;
573e9a62 Michael Tretter 2019-01-09 576
573e9a62 Michael Tretter 2019-01-09 577 if (!src)
573e9a62 Michael Tretter 2019-01-09 578 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 579
573e9a62 Michael Tretter 2019-01-09 580 if (size > mbox->size) {
573e9a62 Michael Tretter 2019-01-09 581 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 582 "message (%lu bytes) to large for mailbox (%lu bytes)\n",
573e9a62 Michael Tretter 2019-01-09 583 size, mbox->size);
573e9a62 Michael Tretter 2019-01-09 584 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 585 }
573e9a62 Michael Tretter 2019-01-09 586
573e9a62 Michael Tretter 2019-01-09 587 if (header->length != size - sizeof(*header)) {
573e9a62 Michael Tretter 2019-01-09 588 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 589 "invalid message length: %u bytes (expected %lu bytes)\n",
573e9a62 Michael Tretter 2019-01-09 590 header->length, size - sizeof(*header));
573e9a62 Michael Tretter 2019-01-09 591 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 592 }
573e9a62 Michael Tretter 2019-01-09 593
573e9a62 Michael Tretter 2019-01-09 594 v4l2_dbg(2, debug, &dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 595 "write command message: type %s, body length %d\n",
573e9a62 Michael Tretter 2019-01-09 596 msg_type_name(header->type), header->length);
573e9a62 Michael Tretter 2019-01-09 597
573e9a62 Michael Tretter 2019-01-09 598 mutex_lock(&mbox->lock);
573e9a62 Michael Tretter 2019-01-09 599 regmap_read(dev->sram, mbox->tail, &tail);
573e9a62 Michael Tretter 2019-01-09 600 if (tail > mbox->size) {
573e9a62 Michael Tretter 2019-01-09 601 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 602 "invalid tail (0x%x): must be smaller than mailbox size (0x%lx)\n",
573e9a62 Michael Tretter 2019-01-09 603 tail, mbox->size);
573e9a62 Michael Tretter 2019-01-09 604 err = -EIO;
573e9a62 Michael Tretter 2019-01-09 605 goto out;
573e9a62 Michael Tretter 2019-01-09 606 }
573e9a62 Michael Tretter 2019-01-09 607 size_no_wrap = min(size, mbox->size - (size_t)tail);
573e9a62 Michael Tretter 2019-01-09 608 regmap_bulk_write(dev->sram, mbox->data + tail, src, size_no_wrap / 4);
573e9a62 Michael Tretter 2019-01-09 609 regmap_bulk_write(dev->sram, mbox->data,
573e9a62 Michael Tretter 2019-01-09 610 src + size_no_wrap, (size - size_no_wrap) / 4);
573e9a62 Michael Tretter 2019-01-09 611 regmap_write(dev->sram, mbox->tail, (tail + size) % mbox->size);
573e9a62 Michael Tretter 2019-01-09 612
573e9a62 Michael Tretter 2019-01-09 613 out:
573e9a62 Michael Tretter 2019-01-09 614 mutex_unlock(&mbox->lock);
573e9a62 Michael Tretter 2019-01-09 615
573e9a62 Michael Tretter 2019-01-09 @616 return err;
573e9a62 Michael Tretter 2019-01-09 617 }
573e9a62 Michael Tretter 2019-01-09 618
573e9a62 Michael Tretter 2019-01-09 619 static ssize_t allegro_mbox_read(struct allegro_dev *dev,
573e9a62 Michael Tretter 2019-01-09 620 struct allegro_mbox *mbox,
573e9a62 Michael Tretter 2019-01-09 621 void *dst, size_t nbyte)
573e9a62 Michael Tretter 2019-01-09 622 {
573e9a62 Michael Tretter 2019-01-09 623 struct mcu_msg_header *header;
573e9a62 Michael Tretter 2019-01-09 624 unsigned int head;
573e9a62 Michael Tretter 2019-01-09 625 ssize_t size;
573e9a62 Michael Tretter 2019-01-09 626 size_t body_no_wrap;
573e9a62 Michael Tretter 2019-01-09 627
573e9a62 Michael Tretter 2019-01-09 628 regmap_read(dev->sram, mbox->head, &head);
573e9a62 Michael Tretter 2019-01-09 629 if (head > mbox->size) {
573e9a62 Michael Tretter 2019-01-09 630 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 631 "invalid head (0x%x): must be smaller than mailbox size (0x%lx)\n",
573e9a62 Michael Tretter 2019-01-09 632 head, mbox->size);
573e9a62 Michael Tretter 2019-01-09 633 return -EIO;
573e9a62 Michael Tretter 2019-01-09 634 }
573e9a62 Michael Tretter 2019-01-09 635
573e9a62 Michael Tretter 2019-01-09 636 /* Assume that the header does not wrap. */
573e9a62 Michael Tretter 2019-01-09 637 regmap_bulk_read(dev->sram, mbox->data + head,
573e9a62 Michael Tretter 2019-01-09 638 dst, sizeof(*header) / 4);
573e9a62 Michael Tretter 2019-01-09 639 header = dst;
573e9a62 Michael Tretter 2019-01-09 640 size = header->length + sizeof(*header);
573e9a62 Michael Tretter 2019-01-09 641 if (size > mbox->size || size & 0x3) {
573e9a62 Michael Tretter 2019-01-09 642 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 643 "invalid message length: %lu bytes (maximum %lu bytes)\n",
573e9a62 Michael Tretter 2019-01-09 644 header->length + sizeof(*header), mbox->size);
573e9a62 Michael Tretter 2019-01-09 645 return -EIO;
573e9a62 Michael Tretter 2019-01-09 646 }
573e9a62 Michael Tretter 2019-01-09 647 if (size > nbyte) {
573e9a62 Michael Tretter 2019-01-09 648 v4l2_err(&dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 649 "destination buffer too small: %lu bytes (need %lu bytes)\n",
573e9a62 Michael Tretter 2019-01-09 650 nbyte, size);
573e9a62 Michael Tretter 2019-01-09 651 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 652 }
573e9a62 Michael Tretter 2019-01-09 653
573e9a62 Michael Tretter 2019-01-09 654 /*
573e9a62 Michael Tretter 2019-01-09 655 * The message might wrap within the mailbox. If the message does not
573e9a62 Michael Tretter 2019-01-09 656 * wrap, the first read will read the entire message, otherwise the
573e9a62 Michael Tretter 2019-01-09 657 * first read will read message until the end of the mailbox and the
573e9a62 Michael Tretter 2019-01-09 658 * second read will read the remaining bytes from the beginning of the
573e9a62 Michael Tretter 2019-01-09 659 * mailbox.
573e9a62 Michael Tretter 2019-01-09 660 *
573e9a62 Michael Tretter 2019-01-09 661 * Skip the header, as was already read to get the size of the body.
573e9a62 Michael Tretter 2019-01-09 662 */
573e9a62 Michael Tretter 2019-01-09 663 body_no_wrap = min((size_t)header->length,
573e9a62 Michael Tretter 2019-01-09 664 (mbox->size - (head + sizeof(*header))));
573e9a62 Michael Tretter 2019-01-09 665 regmap_bulk_read(dev->sram, mbox->data + head + sizeof(*header),
573e9a62 Michael Tretter 2019-01-09 666 dst + sizeof(*header), body_no_wrap / 4);
573e9a62 Michael Tretter 2019-01-09 667 regmap_bulk_read(dev->sram, mbox->data,
573e9a62 Michael Tretter 2019-01-09 668 dst + sizeof(*header) + body_no_wrap,
573e9a62 Michael Tretter 2019-01-09 669 (header->length - body_no_wrap) / 4);
573e9a62 Michael Tretter 2019-01-09 670
573e9a62 Michael Tretter 2019-01-09 671 regmap_write(dev->sram, mbox->head, (head + size) % mbox->size);
573e9a62 Michael Tretter 2019-01-09 672
573e9a62 Michael Tretter 2019-01-09 673 v4l2_dbg(2, debug, &dev->v4l2_dev,
573e9a62 Michael Tretter 2019-01-09 674 "read status message: type %s, body length %d\n",
573e9a62 Michael Tretter 2019-01-09 675 msg_type_name(header->type), header->length);
573e9a62 Michael Tretter 2019-01-09 676
573e9a62 Michael Tretter 2019-01-09 677 return size;
573e9a62 Michael Tretter 2019-01-09 678 }
573e9a62 Michael Tretter 2019-01-09 679
573e9a62 Michael Tretter 2019-01-09 680 static void allegro_mcu_interrupt(struct allegro_dev *dev)
573e9a62 Michael Tretter 2019-01-09 681 {
573e9a62 Michael Tretter 2019-01-09 682 regmap_write(dev->regmap, AL5_MCU_INTERRUPT, BIT(0));
573e9a62 Michael Tretter 2019-01-09 683 }
573e9a62 Michael Tretter 2019-01-09 684
573e9a62 Michael Tretter 2019-01-09 685 static void allegro_mcu_send_init(struct allegro_dev *dev,
573e9a62 Michael Tretter 2019-01-09 686 dma_addr_t suballoc_dma, size_t suballoc_size)
573e9a62 Michael Tretter 2019-01-09 687 {
573e9a62 Michael Tretter 2019-01-09 688 struct mcu_msg_init_request msg;
573e9a62 Michael Tretter 2019-01-09 689
573e9a62 Michael Tretter 2019-01-09 690 msg.header.type = MCU_MSG_TYPE_INIT;
573e9a62 Michael Tretter 2019-01-09 691 msg.header.length = sizeof(msg) - sizeof(msg.header);
573e9a62 Michael Tretter 2019-01-09 692 msg.reserved0 = 0;
573e9a62 Michael Tretter 2019-01-09 693 msg.suballoc_dma = lower_32_bits(suballoc_dma) | MCU_CACHE_OFFSET;
573e9a62 Michael Tretter 2019-01-09 694 msg.suballoc_size = suballoc_size;
573e9a62 Michael Tretter 2019-01-09 695
573e9a62 Michael Tretter 2019-01-09 696 /* TODO Add L2 cache support. */
573e9a62 Michael Tretter 2019-01-09 697 msg.l2_cache[0] = -1;
573e9a62 Michael Tretter 2019-01-09 698 msg.l2_cache[1] = -1;
573e9a62 Michael Tretter 2019-01-09 699 msg.l2_cache[2] = -1;
573e9a62 Michael Tretter 2019-01-09 700
573e9a62 Michael Tretter 2019-01-09 701 allegro_mbox_write(dev, &dev->mbox_command, &msg, sizeof(msg));
573e9a62 Michael Tretter 2019-01-09 702 allegro_mcu_interrupt(dev);
573e9a62 Michael Tretter 2019-01-09 703 }
573e9a62 Michael Tretter 2019-01-09 704
573e9a62 Michael Tretter 2019-01-09 705 static u32 v4l2_pixelformat_to_mcu_format(u32 pixelformat)
573e9a62 Michael Tretter 2019-01-09 706 {
573e9a62 Michael Tretter 2019-01-09 707 switch (pixelformat) {
573e9a62 Michael Tretter 2019-01-09 708 case V4L2_PIX_FMT_NV12:
573e9a62 Michael Tretter 2019-01-09 709 /* AL_420_8BITS: 0x100 -> NV12, 0x88 -> 8 bit */
573e9a62 Michael Tretter 2019-01-09 710 return 0x100 | 0x88;
573e9a62 Michael Tretter 2019-01-09 711 default:
573e9a62 Michael Tretter 2019-01-09 712 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 713 }
573e9a62 Michael Tretter 2019-01-09 714 }
573e9a62 Michael Tretter 2019-01-09 715
573e9a62 Michael Tretter 2019-01-09 716 static u32 v4l2_colorspace_to_mcu_colorspace(enum v4l2_colorspace colorspace)
573e9a62 Michael Tretter 2019-01-09 717 {
573e9a62 Michael Tretter 2019-01-09 718 switch (colorspace) {
573e9a62 Michael Tretter 2019-01-09 719 case V4L2_COLORSPACE_DEFAULT:
573e9a62 Michael Tretter 2019-01-09 720 /* fallthrough */
573e9a62 Michael Tretter 2019-01-09 721 default:
573e9a62 Michael Tretter 2019-01-09 722 /* e_ColorSpace.UNKNOWN */
573e9a62 Michael Tretter 2019-01-09 723 return 0;
573e9a62 Michael Tretter 2019-01-09 724 }
573e9a62 Michael Tretter 2019-01-09 725 }
573e9a62 Michael Tretter 2019-01-09 726
573e9a62 Michael Tretter 2019-01-09 727 static s8 v4l2_pixelformat_to_mcu_codec(u32 pixelformat)
573e9a62 Michael Tretter 2019-01-09 728 {
573e9a62 Michael Tretter 2019-01-09 729 switch (pixelformat) {
573e9a62 Michael Tretter 2019-01-09 730 case V4L2_PIX_FMT_H264:
573e9a62 Michael Tretter 2019-01-09 731 return 1;
573e9a62 Michael Tretter 2019-01-09 732 default:
573e9a62 Michael Tretter 2019-01-09 733 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 734 }
573e9a62 Michael Tretter 2019-01-09 735 }
573e9a62 Michael Tretter 2019-01-09 736
573e9a62 Michael Tretter 2019-01-09 737 static u8 v4l2_profile_to_mcu_profile(enum v4l2_mpeg_video_h264_profile profile)
573e9a62 Michael Tretter 2019-01-09 738 {
573e9a62 Michael Tretter 2019-01-09 739 switch (profile) {
573e9a62 Michael Tretter 2019-01-09 740 case V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE:
573e9a62 Michael Tretter 2019-01-09 741 return 66;
573e9a62 Michael Tretter 2019-01-09 742 default:
573e9a62 Michael Tretter 2019-01-09 @743 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 744 }
573e9a62 Michael Tretter 2019-01-09 745 }
573e9a62 Michael Tretter 2019-01-09 746
573e9a62 Michael Tretter 2019-01-09 747 static u16 v4l2_level_to_mcu_level(enum v4l2_mpeg_video_h264_level level)
573e9a62 Michael Tretter 2019-01-09 748 {
573e9a62 Michael Tretter 2019-01-09 749 switch (level) {
573e9a62 Michael Tretter 2019-01-09 750 case V4L2_MPEG_VIDEO_H264_LEVEL_2_0:
573e9a62 Michael Tretter 2019-01-09 751 return 20;
573e9a62 Michael Tretter 2019-01-09 752 default:
573e9a62 Michael Tretter 2019-01-09 @753 return -EINVAL;
573e9a62 Michael Tretter 2019-01-09 754 }
573e9a62 Michael Tretter 2019-01-09 755 }
573e9a62 Michael Tretter 2019-01-09 756
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
next prev parent reply other threads:[~2019-01-10 19:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-09 11:30 [PATCH 0/3] Add ZynqMP VCU/Allegro DVT H.264 encoder driver Michael Tretter
2019-01-09 11:30 ` [PATCH 1/3] media: dt-bindings: media: document allegro-dvt bindings Michael Tretter
2019-01-09 11:30 ` [PATCH 2/3] [media] allegro: add Allegro DVT video IP core driver Michael Tretter
2019-01-10 6:00 ` kbuild test robot
2019-01-10 19:49 ` kbuild test robot [this message]
2019-01-09 11:30 ` [PATCH 3/3] [media] allegro: add SPS/PPS nal unit writer Michael Tretter
2019-01-10 20:56 ` kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190110194925.GI1718@kadam \
--to=lkp@intel.com \
--cc=dan.carpenter@oracle.com \
--cc=devicetree@vger.kernel.org \
--cc=kbuild-all@01.org \
--cc=kbuild@01.org \
--cc=kernel@pengutronix.de \
--cc=linux-media@vger.kernel.org \
--cc=m.tretter@pengutronix.de \
--cc=mchehab@kernel.org \
--cc=robh+dt@kernel.org \
--cc=tfiga@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).