lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202107150116.Q5CQ7MRF-lkp@intel.com>
Date:   Thu, 15 Jul 2021 01:19:25 +0800
From:   kernel test robot <lkp@...el.com>
To:     Walter Wu <walter-zh.wu@...iatek.com>
Cc:     clang-built-linux@...glegroups.com, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org,
        Nathan Chancellor <natechancellor@...il.com>,
        Andrey Konovalov <andreyknvl@...gle.com>,
        Andrew Morton <akpm@...ux-foundation.org>,
        Linux Memory Management List <linux-mm@...ck.org>
Subject: drivers/usb/misc/sisusbvga/sisusb.c:1878:12: warning: stack frame
 size (16672) exceeds limit (8192) in function 'sisusb_init_gfxcore'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   40226a3d96ef8ab8980f032681c8bfd46d63874e
commit: 02c587733c8161355a43e6e110c2e29bd0acff72 kasan: remove redundant config option
date:   3 months ago
config: powerpc-randconfig-r022-20210714 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 8d69635ed9ecf36fd0ca85906bfde17949671cbe)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=02c587733c8161355a43e6e110c2e29bd0acff72
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 02c587733c8161355a43e6e110c2e29bd0acff72
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc 

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

All warnings (new ones prefixed by >>):

   In file included from drivers/usb/misc/sisusbvga/sisusb.c:50:
   In file included from include/linux/usb.h:16:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:45:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:216:1: note: expanded from here
   __do_insw
   ^
   arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw'
   #define __do_insw(p, b, n)      readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from drivers/usb/misc/sisusbvga/sisusb.c:50:
   In file included from include/linux/usb.h:16:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:218:1: note: expanded from here
   __do_insl
   ^
   arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl'
   #define __do_insl(p, b, n)      readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n))
                                          ~~~~~~~~~~~~~~~~~~~~~^
   In file included from drivers/usb/misc/sisusbvga/sisusb.c:50:
   In file included from include/linux/usb.h:16:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:220:1: note: expanded from here
   __do_outsb
   ^
   arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb'
   #define __do_outsb(p, b, n)     writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from drivers/usb/misc/sisusbvga/sisusb.c:50:
   In file included from include/linux/usb.h:16:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:222:1: note: expanded from here
   __do_outsw
   ^
   arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw'
   #define __do_outsw(p, b, n)     writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
   In file included from drivers/usb/misc/sisusbvga/sisusb.c:50:
   In file included from include/linux/usb.h:16:
   In file included from include/linux/interrupt.h:11:
   In file included from include/linux/hardirq.h:10:
   In file included from arch/powerpc/include/asm/hardirq.h:6:
   In file included from include/linux/irq.h:20:
   In file included from include/linux/io.h:13:
   In file included from arch/powerpc/include/asm/io.h:619:
   arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
   DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c),
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET'
                   __do_##name al;                                 \
                   ^~~~~~~~~~~~~~
   <scratch space>:224:1: note: expanded from here
   __do_outsl
   ^
   arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl'
   #define __do_outsl(p, b, n)     writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n))
                                           ~~~~~~~~~~~~~~~~~~~~~^
>> drivers/usb/misc/sisusbvga/sisusb.c:1878:12: warning: stack frame size (16672) exceeds limit (8192) in function 'sisusb_init_gfxcore' [-Wframe-larger-than]
   static int sisusb_init_gfxcore(struct sisusb_usb_data *sisusb)
              ^
>> drivers/usb/misc/sisusbvga/sisusb.c:1750:13: warning: stack frame size (8224) exceeds limit (8192) in function 'sisusb_set_default_mode' [-Wframe-larger-than]
   static void sisusb_set_default_mode(struct sisusb_usb_data *sisusb,
               ^
   9 warnings generated.


vim +/sisusb_init_gfxcore +1878 drivers/usb/misc/sisusbvga/sisusb.c

^1da177e4c3f41 Linus Torvalds       2005-04-16  1749  
a3fe2605a60d1d Hariprasad Kelam     2019-06-09 @1750  static void sisusb_set_default_mode(struct sisusb_usb_data *sisusb,
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1751  		int touchengines)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1752  {
a3fe2605a60d1d Hariprasad Kelam     2019-06-09  1753  	int i, j, modex, bpp, du;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1754  	u8 sr31, cr63, tmp8;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1755  	static const char attrdata[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1756  		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1757  		0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1758  		0x01, 0x00, 0x00, 0x00
^1da177e4c3f41 Linus Torvalds       2005-04-16  1759  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1760  	static const char crtcrdata[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1761  		0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1762  		0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1763  		0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1764  		0xff
^1da177e4c3f41 Linus Torvalds       2005-04-16  1765  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1766  	static const char grcdata[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1767  		0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1768  		0xff
^1da177e4c3f41 Linus Torvalds       2005-04-16  1769  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1770  	static const char crtcdata[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1771  		0x5f, 0x4f, 0x4f, 0x83, 0x55, 0x81, 0x0b, 0x3e,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1772  		0xe9, 0x8b, 0xdf, 0xe8, 0x0c, 0x00, 0x00, 0x05,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1773  		0x00
^1da177e4c3f41 Linus Torvalds       2005-04-16  1774  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1775  
795a8075e9a53f Colin Ian King       2018-07-13  1776  	modex = 640; bpp = 2;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1777  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1778  	GETIREG(SISSR, 0x31, &sr31);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1779  	GETIREG(SISCR, 0x63, &cr63);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1780  	SETIREGOR(SISSR, 0x01, 0x20);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1781  	SETIREG(SISCR, 0x63, cr63 & 0xbf);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1782  	SETIREGOR(SISCR, 0x17, 0x80);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1783  	SETIREGOR(SISSR, 0x1f, 0x04);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1784  	SETIREGAND(SISSR, 0x07, 0xfb);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1785  	SETIREG(SISSR, 0x00, 0x03);	/* seq */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1786  	SETIREG(SISSR, 0x01, 0x21);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1787  	SETIREG(SISSR, 0x02, 0x0f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1788  	SETIREG(SISSR, 0x03, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1789  	SETIREG(SISSR, 0x04, 0x0e);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1790  	SETREG(SISMISCW, 0x23);		/* misc */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1791  	for (i = 0; i <= 0x18; i++) {	/* crtc */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1792  		SETIREG(SISCR, i, crtcrdata[i]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1793  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1794  	for (i = 0; i <= 0x13; i++) {	/* att */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1795  		GETREG(SISINPSTAT, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1796  		SETREG(SISAR, i);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1797  		SETREG(SISAR, attrdata[i]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1798  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1799  	GETREG(SISINPSTAT, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1800  	SETREG(SISAR, 0x14);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1801  	SETREG(SISAR, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1802  	GETREG(SISINPSTAT, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1803  	SETREG(SISAR, 0x20);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1804  	GETREG(SISINPSTAT, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1805  	for (i = 0; i <= 0x08; i++) {	/* grc */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1806  		SETIREG(SISGR, i, grcdata[i]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1807  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1808  	SETIREGAND(SISGR, 0x05, 0xbf);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1809  	for (i = 0x0A; i <= 0x0E; i++) {	/* clr ext */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1810  		SETIREG(SISSR, i, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1811  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1812  	SETIREGAND(SISSR, 0x37, 0xfe);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1813  	SETREG(SISMISCW, 0xef);		/* sync */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1814  	SETIREG(SISCR, 0x11, 0x00);	/* crtc */
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1815  	for (j = 0x00, i = 0; i <= 7; i++, j++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1816  		SETIREG(SISCR, j, crtcdata[i]);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1817  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1818  	for (j = 0x10; i <= 10; i++, j++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1819  		SETIREG(SISCR, j, crtcdata[i]);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1820  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1821  	for (j = 0x15; i <= 12; i++, j++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1822  		SETIREG(SISCR, j, crtcdata[i]);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1823  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1824  	for (j = 0x0A; i <= 15; i++, j++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1825  		SETIREG(SISSR, j, crtcdata[i]);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1826  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1827  	SETIREG(SISSR, 0x0E, (crtcdata[16] & 0xE0));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1828  	SETIREGANDOR(SISCR, 0x09, 0x5f, ((crtcdata[16] & 0x01) << 5));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1829  	SETIREG(SISCR, 0x14, 0x4f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1830  	du = (modex / 16) * (bpp * 2);	/* offset/pitch */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1831  	SETIREGANDOR(SISSR, 0x0e, 0xf0, ((du >> 8) & 0x0f));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1832  	SETIREG(SISCR, 0x13, (du & 0xff));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1833  	du <<= 5;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1834  	tmp8 = du >> 8;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1835  	SETIREG(SISSR, 0x10, tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1836  	SETIREG(SISSR, 0x31, 0x00);	/* VCLK */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1837  	SETIREG(SISSR, 0x2b, 0x1b);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1838  	SETIREG(SISSR, 0x2c, 0xe1);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1839  	SETIREG(SISSR, 0x2d, 0x01);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1840  	SETIREGAND(SISSR, 0x3d, 0xfe);	/* FIFO */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1841  	SETIREG(SISSR, 0x08, 0xae);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1842  	SETIREGAND(SISSR, 0x09, 0xf0);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1843  	SETIREG(SISSR, 0x08, 0x34);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1844  	SETIREGOR(SISSR, 0x3d, 0x01);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1845  	SETIREGAND(SISSR, 0x1f, 0x3f);	/* mode regs */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1846  	SETIREGANDOR(SISSR, 0x06, 0xc0, 0x0a);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1847  	SETIREG(SISCR, 0x19, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1848  	SETIREGAND(SISCR, 0x1a, 0xfc);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1849  	SETIREGAND(SISSR, 0x0f, 0xb7);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1850  	SETIREGAND(SISSR, 0x31, 0xfb);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1851  	SETIREGANDOR(SISSR, 0x21, 0x1f, 0xa0);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1852  	SETIREGAND(SISSR, 0x32, 0xf3);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1853  	SETIREGANDOR(SISSR, 0x07, 0xf8, 0x03);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1854  	SETIREG(SISCR, 0x52, 0x6c);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1855  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1856  	SETIREG(SISCR, 0x0d, 0x00);	/* adjust frame */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1857  	SETIREG(SISCR, 0x0c, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1858  	SETIREG(SISSR, 0x0d, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1859  	SETIREGAND(SISSR, 0x37, 0xfe);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1860  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1861  	SETIREG(SISCR, 0x32, 0x20);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1862  	SETIREGAND(SISSR, 0x01, 0xdf);	/* enable display */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1863  	SETIREG(SISCR, 0x63, (cr63 & 0xbf));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1864  	SETIREG(SISSR, 0x31, (sr31 & 0xfb));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1865  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1866  	if (touchengines) {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1867  		SETIREG(SISSR, 0x20, 0xa1);	/* enable engines */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1868  		SETIREGOR(SISSR, 0x1e, 0x5a);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1869  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1870  		SETIREG(SISSR, 0x26, 0x01);	/* disable cmdqueue */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1871  		SETIREG(SISSR, 0x27, 0x1f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1872  		SETIREG(SISSR, 0x26, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1873  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1874  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1875  	SETIREG(SISCR, 0x34, 0x44);	/* we just set std mode #44 */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1876  }
^1da177e4c3f41 Linus Torvalds       2005-04-16  1877  
06e21efa2d344b Peter Senna Tschudin 2016-01-15 @1878  static int sisusb_init_gfxcore(struct sisusb_usb_data *sisusb)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1879  {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1880  	int ret = 0, i, j, bw, chab, iret, retry = 3;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1881  	u8 tmp8, ramtype;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1882  	u32 tmp32;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1883  	static const char mclktable[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1884  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1885  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1886  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1887  		0x3b, 0x22, 0x01, 143
^1da177e4c3f41 Linus Torvalds       2005-04-16  1888  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1889  	static const char eclktable[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1890  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1891  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1892  		0x3b, 0x22, 0x01, 143,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1893  		0x3b, 0x22, 0x01, 143
^1da177e4c3f41 Linus Torvalds       2005-04-16  1894  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1895  	static const char ramtypetable1[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1896  		0x00, 0x04, 0x60, 0x60,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1897  		0x0f, 0x0f, 0x1f, 0x1f,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1898  		0xba, 0xba, 0xba, 0xba,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1899  		0xa9, 0xa9, 0xac, 0xac,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1900  		0xa0, 0xa0, 0xa0, 0xa8,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1901  		0x00, 0x00, 0x02, 0x02,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1902  		0x30, 0x30, 0x40, 0x40
^1da177e4c3f41 Linus Torvalds       2005-04-16  1903  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1904  	static const char ramtypetable2[] = {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1905  		0x77, 0x77, 0x44, 0x44,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1906  		0x77, 0x77, 0x44, 0x44,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1907  		0x00, 0x00, 0x00, 0x00,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1908  		0x5b, 0x5b, 0xab, 0xab,
^1da177e4c3f41 Linus Torvalds       2005-04-16  1909  		0x00, 0x00, 0xf0, 0xf8
^1da177e4c3f41 Linus Torvalds       2005-04-16  1910  	};
^1da177e4c3f41 Linus Torvalds       2005-04-16  1911  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1912  	while (retry--) {
^1da177e4c3f41 Linus Torvalds       2005-04-16  1913  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1914  		/* Enable VGA */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1915  		ret = GETREG(SISVGAEN, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1916  		ret |= SETREG(SISVGAEN, (tmp8 | 0x01));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1917  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1918  		/* Enable GPU access to VRAM */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1919  		ret |= GETREG(SISMISCR, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1920  		ret |= SETREG(SISMISCW, (tmp8 | 0x01));
^1da177e4c3f41 Linus Torvalds       2005-04-16  1921  
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1922  		if (ret)
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1923  			continue;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1924  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1925  		/* Reset registers */
^1da177e4c3f41 Linus Torvalds       2005-04-16  1926  		ret |= SETIREGAND(SISCR, 0x5b, 0xdf);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1927  		ret |= SETIREG(SISSR, 0x05, 0x86);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1928  		ret |= SETIREGOR(SISSR, 0x20, 0x01);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1929  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1930  		ret |= SETREG(SISMISCW, 0x67);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1931  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1932  		for (i = 0x06; i <= 0x1f; i++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1933  			ret |= SETIREG(SISSR, i, 0x00);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1934  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1935  		for (i = 0x21; i <= 0x27; i++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1936  			ret |= SETIREG(SISSR, i, 0x00);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1937  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1938  		for (i = 0x31; i <= 0x3d; i++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1939  			ret |= SETIREG(SISSR, i, 0x00);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1940  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1941  		for (i = 0x12; i <= 0x1b; i++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1942  			ret |= SETIREG(SISSR, i, 0x00);
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1943  
f996c49d4fa4e8 Peter Senna Tschudin 2016-01-15  1944  		for (i = 0x79; i <= 0x7c; i++)
^1da177e4c3f41 Linus Torvalds       2005-04-16  1945  			ret |= SETIREG(SISCR, i, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1946  
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1947  		if (ret)
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1948  			continue;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1949  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1950  		ret |= SETIREG(SISCR, 0x63, 0x80);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1951  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1952  		ret |= GETIREG(SISSR, 0x3a, &ramtype);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1953  		ramtype &= 0x03;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1954  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1955  		ret |= SETIREG(SISSR, 0x28, mclktable[ramtype * 4]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1956  		ret |= SETIREG(SISSR, 0x29, mclktable[(ramtype * 4) + 1]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1957  		ret |= SETIREG(SISSR, 0x2a, mclktable[(ramtype * 4) + 2]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1958  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1959  		ret |= SETIREG(SISSR, 0x2e, eclktable[ramtype * 4]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1960  		ret |= SETIREG(SISSR, 0x2f, eclktable[(ramtype * 4) + 1]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1961  		ret |= SETIREG(SISSR, 0x30, eclktable[(ramtype * 4) + 2]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1962  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1963  		ret |= SETIREG(SISSR, 0x07, 0x18);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1964  		ret |= SETIREG(SISSR, 0x11, 0x0f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1965  
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1966  		if (ret)
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1967  			continue;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1968  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1969  		for (i = 0x15, j = 0; i <= 0x1b; i++, j++) {
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1970  			ret |= SETIREG(SISSR, i,
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1971  					ramtypetable1[(j*4) + ramtype]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1972  		}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1973  		for (i = 0x40, j = 0; i <= 0x44; i++, j++) {
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1974  			ret |= SETIREG(SISCR, i,
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1975  					ramtypetable2[(j*4) + ramtype]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1976  		}
^1da177e4c3f41 Linus Torvalds       2005-04-16  1977  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1978  		ret |= SETIREG(SISCR, 0x49, 0xaa);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1979  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1980  		ret |= SETIREG(SISSR, 0x1f, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1981  		ret |= SETIREG(SISSR, 0x20, 0xa0);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1982  		ret |= SETIREG(SISSR, 0x23, 0xf6);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1983  		ret |= SETIREG(SISSR, 0x24, 0x0d);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1984  		ret |= SETIREG(SISSR, 0x25, 0x33);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1985  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1986  		ret |= SETIREG(SISSR, 0x11, 0x0f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1987  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1988  		ret |= SETIREGOR(SISPART1, 0x2f, 0x01);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1989  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1990  		ret |= SETIREGAND(SISCAP, 0x3f, 0xef);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1991  
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1992  		if (ret)
06e21efa2d344b Peter Senna Tschudin 2016-01-15  1993  			continue;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1994  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1995  		ret |= SETIREG(SISPART1, 0x00, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1996  
^1da177e4c3f41 Linus Torvalds       2005-04-16  1997  		ret |= GETIREG(SISSR, 0x13, &tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  1998  		tmp8 >>= 4;
^1da177e4c3f41 Linus Torvalds       2005-04-16  1999  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2000  		ret |= SETIREG(SISPART1, 0x02, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2001  		ret |= SETIREG(SISPART1, 0x2e, 0x08);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2002  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2003  		ret |= sisusb_read_pci_config(sisusb, 0x50, &tmp32);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2004  		tmp32 &= 0x00f00000;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2005  		tmp8 = (tmp32 == 0x100000) ? 0x33 : 0x03;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2006  		ret |= SETIREG(SISSR, 0x25, tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2007  		tmp8 = (tmp32 == 0x100000) ? 0xaa : 0x88;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2008  		ret |= SETIREG(SISCR, 0x49, tmp8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2009  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2010  		ret |= SETIREG(SISSR, 0x27, 0x1f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2011  		ret |= SETIREG(SISSR, 0x31, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2012  		ret |= SETIREG(SISSR, 0x32, 0x11);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2013  		ret |= SETIREG(SISSR, 0x33, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2014  
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2015  		if (ret)
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2016  			continue;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2017  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2018  		ret |= SETIREG(SISCR, 0x83, 0x00);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2019  
a3fe2605a60d1d Hariprasad Kelam     2019-06-09  2020  		sisusb_set_default_mode(sisusb, 0);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2021  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2022  		ret |= SETIREGAND(SISSR, 0x21, 0xdf);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2023  		ret |= SETIREGOR(SISSR, 0x01, 0x20);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2024  		ret |= SETIREGOR(SISSR, 0x16, 0x0f);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2025  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2026  		ret |= sisusb_triggersr16(sisusb, ramtype);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2027  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2028  		/* Disable refresh */
^1da177e4c3f41 Linus Torvalds       2005-04-16  2029  		ret |= SETIREGAND(SISSR, 0x17, 0xf8);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2030  		ret |= SETIREGOR(SISSR, 0x19, 0x03);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2031  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2032  		ret |= sisusb_getbuswidth(sisusb, &bw, &chab);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2033  		ret |= sisusb_verify_mclk(sisusb);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2034  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2035  		if (ramtype <= 1) {
^1da177e4c3f41 Linus Torvalds       2005-04-16  2036  			ret |= sisusb_get_sdram_size(sisusb, &iret, bw, chab);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2037  			if (iret) {
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2038  				dev_err(&sisusb->sisusb_dev->dev,
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2039  						"RAM size detection failed, assuming 8MB video RAM\n");
^1da177e4c3f41 Linus Torvalds       2005-04-16  2040  				ret |= SETIREG(SISSR, 0x14, 0x31);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2041  				/* TODO */
^1da177e4c3f41 Linus Torvalds       2005-04-16  2042  			}
^1da177e4c3f41 Linus Torvalds       2005-04-16  2043  		} else {
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2044  			dev_err(&sisusb->sisusb_dev->dev,
06e21efa2d344b Peter Senna Tschudin 2016-01-15  2045  					"DDR RAM device found, assuming 8MB video RAM\n");
^1da177e4c3f41 Linus Torvalds       2005-04-16  2046  			ret |= SETIREG(SISSR, 0x14, 0x31);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2047  			/* *** TODO *** */
^1da177e4c3f41 Linus Torvalds       2005-04-16  2048  		}
^1da177e4c3f41 Linus Torvalds       2005-04-16  2049  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2050  		/* Enable refresh */
^1da177e4c3f41 Linus Torvalds       2005-04-16  2051  		ret |= SETIREG(SISSR, 0x16, ramtypetable1[4 + ramtype]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2052  		ret |= SETIREG(SISSR, 0x17, ramtypetable1[8 + ramtype]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2053  		ret |= SETIREG(SISSR, 0x19, ramtypetable1[16 + ramtype]);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2054  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2055  		ret |= SETIREGOR(SISSR, 0x21, 0x20);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2056  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2057  		ret |= SETIREG(SISSR, 0x22, 0xfb);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2058  		ret |= SETIREG(SISSR, 0x21, 0xa5);
^1da177e4c3f41 Linus Torvalds       2005-04-16  2059  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2060  		if (ret == 0)
^1da177e4c3f41 Linus Torvalds       2005-04-16  2061  			break;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2062  	}
^1da177e4c3f41 Linus Torvalds       2005-04-16  2063  
^1da177e4c3f41 Linus Torvalds       2005-04-16  2064  	return ret;
^1da177e4c3f41 Linus Torvalds       2005-04-16  2065  }
^1da177e4c3f41 Linus Torvalds       2005-04-16  2066  

:::::: The code at line 1878 was first introduced by commit
:::::: 06e21efa2d344b5e29bf680e623fa76dbcb62580 usb-misc: sisusbvga: Fix coding style: vertical whitespace changes

:::::: TO: Peter Senna Tschudin <peter.senna@...labora.com>
:::::: CC: Greg Kroah-Hartman <gregkh@...uxfoundation.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (30493 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ