CC: l...@lists.linux.dev
CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: "sw.multimedia" <sw.multime...@starfivetech.com>
CC: Emil Renner Berthing <ker...@esmil.dk>
CC: "jack.zhu" <jack....@starfivetech.com>
CC: "keith.zhao" <keith.z...@starfivetech.com>

tree:   https://github.com/esmil/linux visionfive
head:   243ce759ed5821edf38bf93ce7325e232b805547
commit: ff7b52d6645f1ac8de82b3c80e87e21d73584a50 [48/61] drm/i2c/tda998x: 
Hardcode register values for Starlight
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: riscv-randconfig-c006-20220322 
(https://download.01.org/0day-ci/archive/20220324/202203241430.0xwqwiwf-...@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
902f4708fe1d03b0de7e5315ef875006a6adc319)
reproduce (this is a W=1 build):
        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://github.com/esmil/linux/commit/ff7b52d6645f1ac8de82b3c80e87e21d73584a50
        git remote add esmil https://github.com/esmil/linux
        git fetch --no-tags esmil visionfive
        git checkout ff7b52d6645f1ac8de82b3c80e87e21d73584a50
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   include/asm-generic/bug.h:166:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   drivers/net/ieee802154/fakelb.c:45:9: note: Dereference of null pointer 
(loaded from variable 'level')
           *level = 0xbe;
            ~~~~~ ^
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   drivers/net/ieee802154/atusb.c:155:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:155:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:263:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:263:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:284:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = urb->dev;
                              ^~~~~~~   ~~~~~~~~
   drivers/net/ieee802154/atusb.c:284:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = urb->dev;
                              ^~~~~~~   ~~~~~~~~
   drivers/net/ieee802154/atusb.c:322:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = urb->dev;
                              ^~~~~~~   ~~~~~~~~
   drivers/net/ieee802154/atusb.c:322:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = urb->dev;
                              ^~~~~~~   ~~~~~~~~
   drivers/net/ieee802154/atusb.c:407:9: warning: Dereference of null pointer 
(loaded from variable 'level') [clang-analyzer-core.NullDereference]
           *level = 0xbe;
            ~~~~~ ^
   drivers/net/ieee802154/atusb.c:406:10: note: Assuming 'level' is null
           WARN_ON(!level);
                   ^
   include/asm-generic/bug.h:166:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   drivers/net/ieee802154/atusb.c:407:9: note: Dereference of null pointer 
(loaded from variable 'level')
           *level = 0xbe;
            ~~~~~ ^
   drivers/net/ieee802154/atusb.c:416:17: warning: Value stored to 'dev' during 
its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = &atusb->usb_dev->dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:416:17: note: Value stored to 'dev' during 
its initialization is never read
           struct device *dev = &atusb->usb_dev->dev;
                          ^~~   ~~~~~~~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:457:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:457:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:472:21: warning: Value stored to 'usb_dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   drivers/net/ieee802154/atusb.c:472:21: note: Value stored to 'usb_dev' 
during its initialization is never read
           struct usb_device *usb_dev = atusb->usb_dev;
                              ^~~~~~~   ~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
>> drivers/gpu/drm/i2c/tda998x_drv.c:1605:3: warning: Value stored to 'reg' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                   reg |= VIP_CNTRL_3_V_TGL;
                   ^
   drivers/gpu/drm/i2c/tda998x_drv.c:1605:3: note: Value stored to 'reg' is 
never read
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c:205:2: warning: Value stored 
to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
           ret = regulator_bulk_disable(ARRAY_SIZE(boe->vregs), boe->vregs);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/panel/panel-boe-bf060y8m-aj0.c:205:2: note: Value stored to 
'ret' is never read
           ret = regulator_bulk_disable(ARRAY_SIZE(boe->vregs), boe->vregs);
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/soc/qcom/qmi_encdec.c:332:4: warning: Value stored to 'rc' is never 
read [clang-analyzer-deadcode.DeadStores]
                           rc = qmi_encode_basic_elem(&opt_flag_value, buf_src,
                           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/soc/qcom/qmi_encdec.c:332:4: note: Value stored to 'rc' is never read
                           rc = qmi_encode_basic_elem(&opt_flag_value, buf_src,
                           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/usb/storage/shuttle_usbat.c:414:4: warning: Value stored to 'result' 
is never read [clang-analyzer-deadcode.DeadStores]
                           result = usbat_read(us, USBAT_ATA, 0x10, status);
                           ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/usb/storage/shuttle_usbat.c:414:4: note: Value stored to 'result' is 
never read
                           result = usbat_read(us, USBAT_ATA, 0x10, status);
                           ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/usb/misc/usbtest.c:369:3: warning: Null pointer passed as 1st 
argument to memory set function [clang-analyzer-unix.cstring.NullArg]
                   memset(buf, 0, len);
                   ^
   drivers/usb/misc/usbtest.c:2190:6: note: Assuming field 'iterations' is > 0

vim +/reg +1605 drivers/gpu/drm/i2c/tda998x_drv.c

e7792ce2da5ded8 Rob Clark             2013-01-08  1429  
30bd8b862f5466f Russell King          2018-08-02  1430  static void 
tda998x_bridge_mode_set(struct drm_bridge *bridge,
63f8f3badf799c8 Laurent Pinchart      2018-04-06  1431                          
            const struct drm_display_mode *mode,
63f8f3badf799c8 Laurent Pinchart      2018-04-06  1432                          
            const struct drm_display_mode *adjusted_mode)
e7792ce2da5ded8 Rob Clark             2013-01-08  1433  {
30bd8b862f5466f Russell King          2018-08-02  1434          struct 
tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
926a299c42e38bb Russell King          2018-08-02  1435          unsigned long 
tmds_clock;
e66e03abf80f701 Russell King          2015-06-06  1436          u16 ref_pix, 
ref_line, n_pix, n_line;
e66e03abf80f701 Russell King          2015-06-06  1437          u16 hs_pix_s, 
hs_pix_e;
e66e03abf80f701 Russell King          2015-06-06  1438          u16 vs1_pix_s, 
vs1_pix_e, vs1_line_s, vs1_line_e;
e66e03abf80f701 Russell King          2015-06-06  1439          u16 vs2_pix_s, 
vs2_pix_e, vs2_line_s, vs2_line_e;
e66e03abf80f701 Russell King          2015-06-06  1440          u16 
vwin1_line_s, vwin1_line_e;
e66e03abf80f701 Russell King          2015-06-06  1441          u16 
vwin2_line_s, vwin2_line_e;
e66e03abf80f701 Russell King          2015-06-06  1442          u16 de_pix_s, 
de_pix_e;
2807ba75970367c Russell King          2018-07-08  1443          u8 reg, div, 
rep, sel_clk;
e7792ce2da5ded8 Rob Clark             2013-01-08  1444  
fcc22c5f9ddaa8d Russell King          2018-07-31  1445          /*
fcc22c5f9ddaa8d Russell King          2018-07-31  1446           * Since we are 
"computer" like, our source invariably produces
fcc22c5f9ddaa8d Russell King          2018-07-31  1447           * full-range 
RGB.  If the monitor supports full-range, then use
fcc22c5f9ddaa8d Russell King          2018-07-31  1448           * it, 
otherwise reduce to limited-range.
fcc22c5f9ddaa8d Russell King          2018-07-31  1449           */
fcc22c5f9ddaa8d Russell King          2018-07-31  1450          
priv->rgb_quant_range =
fcc22c5f9ddaa8d Russell King          2018-07-31  1451                  
priv->connector.display_info.rgb_quant_range_selectable ?
fcc22c5f9ddaa8d Russell King          2018-07-31  1452                  
HDMI_QUANTIZATION_RANGE_FULL :
fcc22c5f9ddaa8d Russell King          2018-07-31  1453                  
drm_default_rgb_quant_range(adjusted_mode);
e7792ce2da5ded8 Rob Clark             2013-01-08  1454  
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1455          /*
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1456           * Internally 
TDA998x is using ITU-R BT.656 style sync but
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1457           * we get VESA 
style sync. TDA998x is using a reference pixel
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1458           * relative to 
ITU to sync to the input frame and for output
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1459           * sync 
generation. Currently, we are using reference detection
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1460           * from HS/VS, 
i.e. REFPIX/REFLINE denote frame start sync point
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1461           * which is 
position of rising VS with coincident rising HS.
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1462           *
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1463           * Now there is 
some issues to take care of:
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1464           * - HDMI data 
islands require sync-before-active
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1465           * - TDA998x 
register values must be > 0 to be enabled
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1466           * - REFLINE 
needs an additional offset of +1
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1467           * - REFPIX 
needs an addtional offset of +1 for UYUV and +3 for RGB
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1468           *
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1469           * So we add +1 
to all horizontal and vertical register values,
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1470           * plus an 
additional +3 for REFPIX as we are using RGB input only.
e7792ce2da5ded8 Rob Clark             2013-01-08  1471           */
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1472          n_pix        = 
mode->htotal;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1473          n_line       = 
mode->vtotal;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1474  
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1475          hs_pix_e     = 
mode->hsync_end - mode->hdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1476          hs_pix_s     = 
mode->hsync_start - mode->hdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1477          de_pix_e     = 
mode->htotal;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1478          de_pix_s     = 
mode->htotal - mode->hdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1479          ref_pix      = 
3 + hs_pix_s;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1480  
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1481          /*
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1482           * Attached LCD 
controllers may generate broken sync. Allow
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1483           * those to 
adjust the position of the rising VS edge by adding
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1484           * HSKEW to 
ref_pix.
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1485           */
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1486          if 
(adjusted_mode->flags & DRM_MODE_FLAG_HSKEW)
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1487                  ref_pix 
+= adjusted_mode->hskew;
179f1aa407b466c Sebastian Hesselbarth 2013-08-14  1488  
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1489          if 
((mode->flags & DRM_MODE_FLAG_INTERLACE) == 0) {
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1490                  
ref_line     = 1 + mode->vsync_start - mode->vdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1491                  
vwin1_line_s = mode->vtotal - mode->vdisplay - 1;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1492                  
vwin1_line_e = vwin1_line_s + mode->vdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1493                  
vs1_pix_s    = vs1_pix_e = hs_pix_s;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1494                  
vs1_line_s   = mode->vsync_start - mode->vdisplay;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1495                  
vs1_line_e   = vs1_line_s +
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1496                          
       mode->vsync_end - mode->vsync_start;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1497                  
vwin2_line_s = vwin2_line_e = 0;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1498                  
vs2_pix_s    = vs2_pix_e  = 0;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1499                  
vs2_line_s   = vs2_line_e = 0;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1500          } else {
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1501                  
ref_line     = 1 + (mode->vsync_start - mode->vdisplay)/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1502                  
vwin1_line_s = (mode->vtotal - mode->vdisplay)/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1503                  
vwin1_line_e = vwin1_line_s + mode->vdisplay/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1504                  
vs1_pix_s    = vs1_pix_e = hs_pix_s;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1505                  
vs1_line_s   = (mode->vsync_start - mode->vdisplay)/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1506                  
vs1_line_e   = vs1_line_s +
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1507                          
       (mode->vsync_end - mode->vsync_start)/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1508                  
vwin2_line_s = vwin1_line_s + mode->vtotal/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1509                  
vwin2_line_e = vwin2_line_s + mode->vdisplay/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1510                  
vs2_pix_s    = vs2_pix_e = hs_pix_s + mode->htotal/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1511                  
vs2_line_s   = vs1_line_s + mode->vtotal/2 ;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1512                  
vs2_line_e   = vs2_line_s +
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1513                          
       (mode->vsync_end - mode->vsync_start)/2;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1514          }
e7792ce2da5ded8 Rob Clark             2013-01-08  1515  
2807ba75970367c Russell King          2018-07-08  1516          /*
2807ba75970367c Russell King          2018-07-08  1517           * Select pixel 
repeat depending on the double-clock flag
2807ba75970367c Russell King          2018-07-08  1518           * (which means 
we have to repeat each pixel once.)
2807ba75970367c Russell King          2018-07-08  1519           */
2807ba75970367c Russell King          2018-07-08  1520          rep = 
mode->flags & DRM_MODE_FLAG_DBLCLK ? 1 : 0;
2807ba75970367c Russell King          2018-07-08  1521          sel_clk = 
SEL_CLK_ENA_SC_CLK | SEL_CLK_SEL_CLK1 |
2807ba75970367c Russell King          2018-07-08  1522                    
SEL_CLK_SEL_VRF_CLK(rep ? 2 : 0);
2807ba75970367c Russell King          2018-07-08  1523  
2807ba75970367c Russell King          2018-07-08  1524          /* the TMDS 
clock is scaled up by the pixel repeat */
2807ba75970367c Russell King          2018-07-08  1525          tmds_clock = 
mode->clock * (1 + rep);
926a299c42e38bb Russell King          2018-08-02  1526  
926a299c42e38bb Russell King          2018-08-02  1527          /*
926a299c42e38bb Russell King          2018-08-02  1528           * The divisor 
is power-of-2. The TDA9983B datasheet gives
926a299c42e38bb Russell King          2018-08-02  1529           * this as 
ranges of Msample/s, which is 10x the TMDS clock:
926a299c42e38bb Russell King          2018-08-02  1530           *   0 - 800 to 
1500 Msample/s
926a299c42e38bb Russell King          2018-08-02  1531           *   1 - 400 to 
800 Msample/s
926a299c42e38bb Russell King          2018-08-02  1532           *   2 - 200 to 
400 Msample/s
926a299c42e38bb Russell King          2018-08-02  1533           *   3 - as 2 
above
926a299c42e38bb Russell King          2018-08-02  1534           */
926a299c42e38bb Russell King          2018-08-02  1535          for (div = 0; 
div < 3; div++)
926a299c42e38bb Russell King          2018-08-02  1536                  if 
(80000 >> div <= tmds_clock)
926a299c42e38bb Russell King          2018-08-02  1537                          
break;
e7792ce2da5ded8 Rob Clark             2013-01-08  1538  
2cae8e028ecb440 Russell King          2016-11-02  1539          
mutex_lock(&priv->audio_mutex);
2cae8e028ecb440 Russell King          2016-11-02  1540  
2807ba75970367c Russell King          2018-07-08  1541          
priv->tmds_clock = tmds_clock;
2807ba75970367c Russell King          2018-07-08  1542  
e7792ce2da5ded8 Rob Clark             2013-01-08  1543          /* mute the 
audio FIFO: */
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1544          reg_set(priv, 
REG_AIP_CNTRL_0, AIP_CNTRL_0_RST_FIFO);
e7792ce2da5ded8 Rob Clark             2013-01-08  1545  
e7792ce2da5ded8 Rob Clark             2013-01-08  1546          /* set HDMI 
HDCP mode off: */
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1547          reg_write(priv, 
REG_TBG_CNTRL_1, TBG_CNTRL_1_DWIN_DIS);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1548          reg_clear(priv, 
REG_TX33, TX33_HDMI);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1549          reg_write(priv, 
REG_ENC_CNTRL, ENC_CNTRL_CTL_CODE(0));
e7792ce2da5ded8 Rob Clark             2013-01-08  1550  
e7792ce2da5ded8 Rob Clark             2013-01-08  1551          /* no 
pre-filter or interpolator: */
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1552          reg_write(priv, 
REG_HVF_CNTRL_0, HVF_CNTRL_0_PREFIL(0) |
e7792ce2da5ded8 Rob Clark             2013-01-08  1553                          
HVF_CNTRL_0_INTPOL(0));
9476ed2e3883b11 Russell King          2016-11-03  1554          reg_set(priv, 
REG_FEAT_POWERDOWN, FEAT_POWERDOWN_PREFILT);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1555          reg_write(priv, 
REG_VIP_CNTRL_5, VIP_CNTRL_5_SP_CNT(0));
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1556          reg_write(priv, 
REG_VIP_CNTRL_4, VIP_CNTRL_4_BLANKIT(0) |
e7792ce2da5ded8 Rob Clark             2013-01-08  1557                          
VIP_CNTRL_4_BLC(0));
e7792ce2da5ded8 Rob Clark             2013-01-08  1558  
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1559          reg_clear(priv, 
REG_PLL_SERIAL_1, PLL_SERIAL_1_SRL_MAN_IZ);
a8b517e5312124e Jean-Francois Moine   2014-01-25  1560          reg_clear(priv, 
REG_PLL_SERIAL_3, PLL_SERIAL_3_SRL_CCIR |
a8b517e5312124e Jean-Francois Moine   2014-01-25  1561                          
                  PLL_SERIAL_3_SRL_DE);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1562          reg_write(priv, 
REG_SERIALIZER, 0);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1563          reg_write(priv, 
REG_HVF_CNTRL_1, HVF_CNTRL_1_VQR(0));
e7792ce2da5ded8 Rob Clark             2013-01-08  1564  
2807ba75970367c Russell King          2018-07-08  1565          reg_write(priv, 
REG_RPT_CNTRL, RPT_CNTRL_REPEAT(rep));
2807ba75970367c Russell King          2018-07-08  1566          reg_write(priv, 
REG_SEL_CLK, sel_clk);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1567          reg_write(priv, 
REG_PLL_SERIAL_2, PLL_SERIAL_2_SRL_NOSC(div) |
e7792ce2da5ded8 Rob Clark             2013-01-08  1568                          
PLL_SERIAL_2_SRL_PR(rep));
e7792ce2da5ded8 Rob Clark             2013-01-08  1569  
fcc22c5f9ddaa8d Russell King          2018-07-31  1570          /* set color 
matrix according to output rgb quant range */
fcc22c5f9ddaa8d Russell King          2018-07-31  1571          if 
(priv->rgb_quant_range == HDMI_QUANTIZATION_RANGE_LIMITED) {
fcc22c5f9ddaa8d Russell King          2018-07-31  1572                  static 
u8 tda998x_full_to_limited_range[] = {
fcc22c5f9ddaa8d Russell King          2018-07-31  1573                          
MAT_CONTRL_MAT_SC(2),
fcc22c5f9ddaa8d Russell King          2018-07-31  1574                          
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
fcc22c5f9ddaa8d Russell King          2018-07-31  1575                          
0x03, 0x6f, 0x00, 0x00, 0x00, 0x00,
fcc22c5f9ddaa8d Russell King          2018-07-31  1576                          
0x00, 0x00, 0x03, 0x6f, 0x00, 0x00,
fcc22c5f9ddaa8d Russell King          2018-07-31  1577                          
0x00, 0x00, 0x00, 0x00, 0x03, 0x6f,
fcc22c5f9ddaa8d Russell King          2018-07-31  1578                          
0x00, 0x40, 0x00, 0x40, 0x00, 0x40
fcc22c5f9ddaa8d Russell King          2018-07-31  1579                  };
fcc22c5f9ddaa8d Russell King          2018-07-31  1580                  
reg_clear(priv, REG_FEAT_POWERDOWN, FEAT_POWERDOWN_CSC);
fcc22c5f9ddaa8d Russell King          2018-07-31  1581                  
reg_write_range(priv, REG_MAT_CONTRL,
fcc22c5f9ddaa8d Russell King          2018-07-31  1582                          
        tda998x_full_to_limited_range,
fcc22c5f9ddaa8d Russell King          2018-07-31  1583                          
        sizeof(tda998x_full_to_limited_range));
fcc22c5f9ddaa8d Russell King          2018-07-31  1584          } else {
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1585                  
reg_write(priv, REG_MAT_CONTRL, MAT_CONTRL_MAT_BP |
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1586                          
                MAT_CONTRL_MAT_SC(1));
9476ed2e3883b11 Russell King          2016-11-03  1587                  
reg_set(priv, REG_FEAT_POWERDOWN, FEAT_POWERDOWN_CSC);
fcc22c5f9ddaa8d Russell King          2018-07-31  1588          }
e7792ce2da5ded8 Rob Clark             2013-01-08  1589  
e7792ce2da5ded8 Rob Clark             2013-01-08  1590          /* set BIAS 
tmds value: */
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1591          reg_write(priv, 
REG_ANA_GENERAL, 0x09);
e7792ce2da5ded8 Rob Clark             2013-01-08  1592  
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1593          /*
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1594           * Sync on 
rising HSYNC/VSYNC
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1595           */
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1596          reg = 
VIP_CNTRL_3_SYNC_HS;
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1597  
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1598          /*
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1599           * TDA19988 
requires high-active sync at input stage,
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1600           * so invert 
low-active sync provided by master encoder here
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1601           */
088d61d1fdfde56 Sebastian Hesselbarth 2013-08-14  1602          if (mode->flags 
& DRM_MODE_FLAG_NHSYNC)
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1603                  reg |= 
VIP_CNTRL_3_H_TGL;
e7792ce2da5ded8 Rob Clark             2013-01-08  1604          if (mode->flags 
& DRM_MODE_FLAG_NVSYNC)
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25 @1605                  reg |= 
VIP_CNTRL_3_V_TGL;
ff7b52d6645f1ac sw.multimedia         2021-08-31  1606          
//reg_write(priv, REG_VIP_CNTRL_3, reg);
ff7b52d6645f1ac sw.multimedia         2021-08-31  1607          reg_write(priv, 
REG_VIP_CNTRL_3, 0x26);
ff7b52d6645f1ac sw.multimedia         2021-08-31  1608          reg_write(priv, 
REG_VIDFORMAT, 0x06);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1609  
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1610          reg_write(priv, 
REG_VIDFORMAT, 0x00);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1611          
reg_write16(priv, REG_REFPIX_MSB, ref_pix);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1612          
reg_write16(priv, REG_REFLINE_MSB, ref_line);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1613          
reg_write16(priv, REG_NPIX_MSB, n_pix);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1614          
reg_write16(priv, REG_NLINE_MSB, n_line);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1615          
reg_write16(priv, REG_VS_LINE_STRT_1_MSB, vs1_line_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1616          
reg_write16(priv, REG_VS_PIX_STRT_1_MSB, vs1_pix_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1617          
reg_write16(priv, REG_VS_LINE_END_1_MSB, vs1_line_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1618          
reg_write16(priv, REG_VS_PIX_END_1_MSB, vs1_pix_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1619          
reg_write16(priv, REG_VS_LINE_STRT_2_MSB, vs2_line_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1620          
reg_write16(priv, REG_VS_PIX_STRT_2_MSB, vs2_pix_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1621          
reg_write16(priv, REG_VS_LINE_END_2_MSB, vs2_line_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1622          
reg_write16(priv, REG_VS_PIX_END_2_MSB, vs2_pix_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1623          
reg_write16(priv, REG_HS_PIX_START_MSB, hs_pix_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1624          
reg_write16(priv, REG_HS_PIX_STOP_MSB, hs_pix_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1625          
reg_write16(priv, REG_VWIN_START_1_MSB, vwin1_line_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1626          
reg_write16(priv, REG_VWIN_END_1_MSB, vwin1_line_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1627          
reg_write16(priv, REG_VWIN_START_2_MSB, vwin2_line_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1628          
reg_write16(priv, REG_VWIN_END_2_MSB, vwin2_line_e);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1629          
reg_write16(priv, REG_DE_START_MSB, de_pix_s);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1630          
reg_write16(priv, REG_DE_STOP_MSB, de_pix_e);
e7792ce2da5ded8 Rob Clark             2013-01-08  1631  
e7792ce2da5ded8 Rob Clark             2013-01-08  1632          if (priv->rev 
== TDA19988) {
e7792ce2da5ded8 Rob Clark             2013-01-08  1633                  /* let 
incoming pixels fill the active space (if any) */
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1634                  
reg_write(priv, REG_ENABLE_SPACE, 0x00);
e7792ce2da5ded8 Rob Clark             2013-01-08  1635          }
e7792ce2da5ded8 Rob Clark             2013-01-08  1636  
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1637          /*
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1638           * Always 
generate sync polarity relative to input sync and
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1639           * revert input 
stage toggled sync at output stage
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1640           */
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1641          reg = 
TBG_CNTRL_1_DWIN_DIS | TBG_CNTRL_1_TGL_EN;
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1642          if (mode->flags 
& DRM_MODE_FLAG_NHSYNC)
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1643                  reg |= 
TBG_CNTRL_1_H_TGL;
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1644          if (mode->flags 
& DRM_MODE_FLAG_NVSYNC)
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1645                  reg |= 
TBG_CNTRL_1_V_TGL;
ff7b52d6645f1ac sw.multimedia         2021-08-31  1646          
//reg_write(priv, REG_TBG_CNTRL_1, reg);
ff7b52d6645f1ac sw.multimedia         2021-08-31  1647          reg_write(priv, 
REG_TBG_CNTRL_1, 0x46);
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1648  
e7792ce2da5ded8 Rob Clark             2013-01-08  1649          /* must be last 
register set: */
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1650          reg_write(priv, 
REG_TBG_CNTRL_0, 0);
c4c11dd160a8cc9 Russell King          2013-08-14  1651  
896a4130b8e60cb Russell King          2016-10-23  1652          /* CEA-861B 
section 6 says that:
896a4130b8e60cb Russell King          2016-10-23  1653           * CEA version 
1 (CEA-861) has no support for infoframes.
896a4130b8e60cb Russell King          2016-10-23  1654           * CEA version 
2 (CEA-861A) supports version 1 AVI infoframes,
896a4130b8e60cb Russell King          2016-10-23  1655           * and optional 
basic audio.
896a4130b8e60cb Russell King          2016-10-23  1656           * CEA version 
3 (CEA-861B) supports version 1 and 2 AVI infoframes,
896a4130b8e60cb Russell King          2016-10-23  1657           * and optional 
digital audio, with audio infoframes.
896a4130b8e60cb Russell King          2016-10-23  1658           *
896a4130b8e60cb Russell King          2016-10-23  1659           * Since we 
only support generation of version 2 AVI infoframes,
896a4130b8e60cb Russell King          2016-10-23  1660           * ignore CEA 
version 2 and below (iow, behave as if we're a
896a4130b8e60cb Russell King          2016-10-23  1661           * CEA-861 
source.)
896a4130b8e60cb Russell King          2016-10-23  1662           */
896a4130b8e60cb Russell King          2016-10-23  1663          
priv->supports_infoframes = priv->connector.display_info.cea_rev >= 3;
896a4130b8e60cb Russell King          2016-10-23  1664  
896a4130b8e60cb Russell King          2016-10-23  1665          if 
(priv->supports_infoframes) {
c4c11dd160a8cc9 Russell King          2013-08-14  1666                  /* We 
need to turn HDMI HDCP stuff on to get audio through */
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1667                  reg &= 
~TBG_CNTRL_1_DWIN_DIS;
81b53a166f5cdf4 Jean-Francois Moine   2014-01-25  1668                  
reg_write(priv, REG_TBG_CNTRL_1, reg);
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1669                  
reg_write(priv, REG_ENC_CNTRL, ENC_CNTRL_CTL_CODE(1));
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1670                  
reg_set(priv, REG_TX33, TX33_HDMI);
c4c11dd160a8cc9 Russell King          2013-08-14  1671  
2f7f730a4f0fd33 Jean-Francois Moine   2014-01-25  1672                  
tda998x_write_avi(priv, adjusted_mode);
45a19dd397886a9 Russell King          2018-12-05  1673                  
tda998x_write_vsi(priv, adjusted_mode);
c4c11dd160a8cc9 Russell King          2013-08-14  1674  
82642ab7345d7e7 Russell King          2019-03-01  1675                  if 
(priv->sink_has_audio)
900b2b7250b8fe4 Russell King          2019-03-01  1676                          
tda998x_configure_audio(priv);
95db3b255fde4e8 Jyri Sarha            2016-08-09  1677          }
319e658c78befa5 Russell King          2016-10-23  1678  
319e658c78befa5 Russell King          2016-10-23  1679          
mutex_unlock(&priv->audio_mutex);
c4c11dd160a8cc9 Russell King          2013-08-14  1680  }
e7792ce2da5ded8 Rob Clark             2013-01-08  1681  

:::::: The code at line 1605 was first introduced by commit
:::::: 81b53a166f5cdf4e5bec47fc8884c994de82dc6b drm/i2c: tda998x: don't read 
write-only registers

:::::: TO: Jean-Francois Moine <moin...@free.fr>
:::::: CC: Russell King <rmk+ker...@arm.linux.org.uk>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to