drivers/media/tuners/xc2028.c:717:12: warning: stack frame size (3520) exceeds limit (2048) in 'check_firmware'

From: kernel test robot
Date: Thu Jun 08 2023 - 20:04:07 EST


Hi Mauro,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8d15d5e1851b1bbb9cd3289b84c7f32399e06ac5
commit: d76231e460fbaba7115212bf55f1eab35aba6223 media: xc2028: rename the driver from tuner-xc2028
date: 1 year, 3 months ago
config: riscv-randconfig-r012-20230608 (https://download.01.org/0day-ci/archive/20230609/202306090751.d3DQi8se-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d76231e460fbaba7115212bf55f1eab35aba6223
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d76231e460fbaba7115212bf55f1eab35aba6223
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=riscv olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpu/drm/ drivers/hid/ drivers/media/tuners/ lib/

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306090751.d3DQi8se-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/media/tuners/xc2028.c:717:12: warning: stack frame size (3520) exceeds limit (2048) in 'check_firmware' [-Wframe-larger-than]
static int check_firmware(struct dvb_frontend *fe, unsigned int type,
^
1 warning generated.


vim +/check_firmware +717 drivers/media/tuners/xc2028.c

ebf044f46f138b drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2014-01-06 716
00deff1a076dc1 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-24 @717 static int check_firmware(struct dvb_frontend *fe, unsigned int type,
66c2d53db28276 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-25 718 v4l2_std_id std, __u16 int_freq)
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 719 {
215b95baf969c6 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-23 720 struct xc2028_data *priv = fe->tuner_priv;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 721 struct firmware_properties new_fw;
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 722 int rc, retry_count = 0;
7d58d1117ec02f drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 723 u16 version, hwmodel;
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 724 v4l2_std_id std0;
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 725
7e28adb2497f6b drivers/media/video/tuner-xc2028.c Harvey Harrison 2008-04-08 726 tuner_dbg("%s called\n", __func__);
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 727
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 728 rc = check_device_status(priv);
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 729 if (rc < 0)
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 730 return rc;
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 731
0f6dac18ccc6fb drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2008-01-05 732 if (priv->ctrl.mts && !(type & FM))
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 733 type |= MTS;
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 734
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 735 retry:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 736 new_fw.type = type;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 737 new_fw.id = std;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 738 new_fw.std_req = std;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 739 new_fw.scode_table = SCODE | priv->ctrl.scode_table;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 740 new_fw.scode_nr = 0;
66c2d53db28276 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-25 741 new_fw.int_freq = int_freq;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 742
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 743 tuner_dbg("checking firmware, user requested type=");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 744 if (debug) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 745 dump_firm_type(new_fw.type);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 746 printk(KERN_CONT "(%x), id %016llx, ", new_fw.type,
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 747 (unsigned long long)new_fw.std_req);
e026268870b5f0 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-12-02 748 if (!int_freq) {
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 749 printk(KERN_CONT "scode_tbl ");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 750 dump_firm_type(priv->ctrl.scode_table);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 751 printk(KERN_CONT "(%x), ", priv->ctrl.scode_table);
e026268870b5f0 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-12-02 752 } else
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 753 printk(KERN_CONT "int_freq %d, ", new_fw.int_freq);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 754 printk(KERN_CONT "scode_nr %d\n", new_fw.scode_nr);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 755 }
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 756
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 757 /*
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 758 * No need to reload base firmware if it matches and if the tuner
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 759 * is not at sleep mode
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 760 */
3a495ed77a2f58 drivers/media/common/tuners/tuner-xc2028.c Dan Carpenter 2012-07-21 761 if ((priv->state == XC2028_ACTIVE) &&
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 762 (((BASE | new_fw.type) & BASE_TYPES) ==
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 763 (priv->cur_fw.type & BASE_TYPES))) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 764 tuner_dbg("BASE firmware not changed.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 765 goto skip_base;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 766 }
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 767
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 768 /* Updating BASE - forget about all currently loaded firmware */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 769 memset(&priv->cur_fw, 0, sizeof(priv->cur_fw));
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 770
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 771 /* Reset is needed before loading firmware */
d7cba043d7ec84 drivers/media/common/tuners/tuner-xc2028.c Michael Krufky 2008-09-12 772 rc = do_tuner_callback(fe, XC2028_TUNER_RESET, 0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 773 if (rc < 0)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 774 goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 775
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 776 /* BASE firmwares are all std0 */
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 777 std0 = 0;
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 778 rc = load_firmware(fe, BASE | new_fw.type, &std0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 779 if (rc < 0) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 780 tuner_err("Error %d while loading base firmware\n",
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 781 rc);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 782 goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 783 }
5403bbae9bfebe drivers/media/video/tuner-xc2028.c Michel Ludwig 2007-11-16 784
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 785 /* Load INIT1, if needed */
83fb340b318487 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-15 786 tuner_dbg("Load init1 firmware, if exists\n");
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 787
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 788 rc = load_firmware(fe, BASE | INIT1 | new_fw.type, &std0);
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 789 if (rc == -ENOENT)
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 790 rc = load_firmware(fe, (BASE | INIT1 | new_fw.type) & ~F8MHZ,
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 791 &std0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 792 if (rc < 0 && rc != -ENOENT) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 793 tuner_err("Error %d while loading init1 firmware\n",
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 794 rc);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 795 goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 796 }
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 797
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 798 skip_base:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 799 /*
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 800 * No need to reload standard specific firmware if base firmware
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 801 * was not reloaded and requested video standards have not changed.
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-24 802 */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 803 if (priv->cur_fw.type == (BASE | new_fw.type) &&
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 804 priv->cur_fw.std_req == std) {
83fb340b318487 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-15 805 tuner_dbg("Std-specific firmware already loaded.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 806 goto skip_std_specific;
2e4160ca8046e3 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-07-18 807 }
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 808
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 809 /* Reloading std-specific firmware forces a SCODE update */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 810 priv->cur_fw.scode_table = 0;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 811
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 812 rc = load_firmware(fe, new_fw.type, &new_fw.id);
cca83798119c92 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-22 813 if (rc == -ENOENT)
cca83798119c92 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-22 814 rc = load_firmware(fe, new_fw.type & ~F8MHZ, &new_fw.id);
cca83798119c92 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-22 815
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 816 if (rc < 0)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 817 goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 818
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 819 skip_std_specific:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 820 if (priv->cur_fw.scode_table == new_fw.scode_table &&
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 821 priv->cur_fw.scode_nr == new_fw.scode_nr) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 822 tuner_dbg("SCODE firmware already loaded.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 823 goto check_device;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 824 }
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 825
40ae91a758df91 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2008-02-14 826 if (new_fw.type & FM)
40ae91a758df91 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2008-02-14 827 goto check_device;
40ae91a758df91 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2008-02-14 828
f380e1d2c9a1ff drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-15 829 /* Load SCODE firmware, if exists */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 830 tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
f380e1d2c9a1ff drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-15 831
66c2d53db28276 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-25 832 rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
66c2d53db28276 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-25 833 new_fw.int_freq, new_fw.scode_nr);
43efe70253dd13 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-14 834
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 835 check_device:
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 836 if (xc2028_get_reg(priv, 0x0004, &version) < 0 ||
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 837 xc2028_get_reg(priv, 0x0008, &hwmodel) < 0) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 838 tuner_err("Unable to read tuner registers.\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 839 goto fail;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 840 }
80b522085a2c87 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-05 841
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 842 tuner_dbg("Device is Xceive %d version %d.%d, firmware version %d.%d\n",
80b522085a2c87 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-05 843 hwmodel, (version & 0xf000) >> 12, (version & 0xf00) >> 8,
80b522085a2c87 drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-11-05 844 (version & 0xf0) >> 4, version & 0xf);
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 845
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02 846
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02 847 if (priv->ctrl.read_not_reliable)
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02 848 goto read_not_reliable;
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02 849
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 850 /* Check firmware version against what we downloaded. */
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 851 if (priv->firm_version != ((version & 0xf0) << 4 | (version & 0x0f))) {
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14 852 if (!priv->ctrl.read_not_reliable) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 853 tuner_err("Incorrect readback of firmware version.\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 854 goto fail;
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14 855 } else {
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 856 tuner_err("Returned an incorrect version. However, read is not reliable enough. Ignoring it.\n");
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14 857 hwmodel = 3028;
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14 858 }
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 859 }
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 860
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 861 /* Check that the tuner hardware model remains consistent over time. */
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 862 if (priv->hwmodel == 0 && (hwmodel == 2028 || hwmodel == 3028)) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 863 priv->hwmodel = hwmodel;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 864 priv->hwvers = version & 0xff00;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 865 } else if (priv->hwmodel == 0 || priv->hwmodel != hwmodel ||
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 866 priv->hwvers != (version & 0xff00)) {
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2016-10-12 867 tuner_err("Read invalid device hardware information - tuner hung?\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 868 goto fail;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 869 }
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 870
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02 871 read_not_reliable:
03c420010f4c5d drivers/media/tuners/tuner-xc2028.c Ezequiel Garcia 2012-10-23 872 priv->cur_fw = new_fw;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 873
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 874 /*
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 875 * By setting BASE in cur_fw.type only after successfully loading all
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 876 * firmwares, we can:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 877 * 1. Identify that BASE firmware with type=0 has been loaded;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 878 * 2. Tell whether BASE firmware was just changed the next time through.
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 879 */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 880 priv->cur_fw.type |= BASE;
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 881 priv->state = XC2028_ACTIVE;
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 882
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 883 return 0;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 884
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 885 fail:
22a1e7783e173a drivers/media/tuners/tuner-xc2028.c Takashi Iwai 2016-11-17 886 free_firmware(priv);
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30 887
b8bc77db1e23c6 drivers/media/common/tuners/tuner-xc2028.c Alina Friedrichsen 2011-01-23 888 if (retry_count < 8) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 889 msleep(50);
b8bc77db1e23c6 drivers/media/common/tuners/tuner-xc2028.c Alina Friedrichsen 2011-01-23 890 retry_count++;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 891 tuner_dbg("Retrying firmware load\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 892 goto retry;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 893 }
8bf799a6217f63 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 894
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2014-01-06 895 /* Firmware didn't load. Put the device to sleep */
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2014-01-06 896 xc2028_sleep(fe);
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2014-01-06 897
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 898 if (rc == -ENOENT)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 899 rc = -EINVAL;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c Chris Pascoe 2007-11-19 900 return rc;
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 901 }
6cb45879dca84c drivers/media/video/tuner-xc2028.c Mauro Carvalho Chehab 2007-10-02 902

:::::: The code at line 717 was first introduced by commit
:::::: 00deff1a076dc1cf6743813657623626720bf0f5 V4L/DVB (6671): Avoids checking digital/analog at check_firmware

:::::: TO: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>
:::::: CC: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki