Hi Arnd, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 8e5423e991e8cd0988d0c4a3f4ac4ca1af7d148a commit: 804f7f19c2e2928aeb8eafef8379fe8b8d13f98b fbdev: omap: avoid using mach/*.h files date: 7 months ago config: arm-randconfig-r032-20221103 compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920) 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 arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=804f7f19c2e2928aeb8eafef8379fe8b8d13f98b git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 804f7f19c2e2928aeb8eafef8379fe8b8d13f98b # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/video/fbdev/omap/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/video/fbdev/omap/hwa742.c:492:5: warning: no previous prototype for function 'hwa742_update_window_async' [-Wmissing-prototypes] int hwa742_update_window_async(struct fb_info *fbi, ^ drivers/video/fbdev/omap/hwa742.c:492:1: note: declare 'static' if the function is not intended to be used outside of this translation unit int hwa742_update_window_async(struct fb_info *fbi, ^ static >> drivers/video/fbdev/omap/hwa742.c:791:13: warning: variable 'vdisp' set but not used [-Wunused-but-set-variable] int hdisp, vdisp; ^ >> drivers/video/fbdev/omap/hwa742.c:943:31: warning: variable 'omapfb_conf' set but not used [-Wunused-but-set-variable] struct omapfb_platform_data *omapfb_conf; ^ 3 warnings generated. vim +/vdisp +791 drivers/video/fbdev/omap/hwa742.c aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 787 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 788 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 789 static int setup_tearsync(unsigned long pix_clk, int extif_div) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 790 { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 @791 int hdisp, vdisp; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 792 int hndp, vndp; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 793 int hsw, vsw; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 794 int hs, vs; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 795 int hs_pol_inv, vs_pol_inv; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 796 int use_hsvs, use_ndp; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 797 u8 b; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 798 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 799 hsw = hwa742_read_reg(HWA742_HS_W_REG); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 800 vsw = hwa742_read_reg(HWA742_VS_W_REG); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 801 hs_pol_inv = !(hsw & 0x80); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 802 vs_pol_inv = !(vsw & 0x80); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 803 hsw = hsw & 0x7f; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 804 vsw = vsw & 0x3f; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 805 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 806 hdisp = (hwa742_read_reg(HWA742_H_DISP_REG) & 0x7f) * 8; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 807 vdisp = hwa742_read_reg(HWA742_V_DISP_1_REG) + aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 808 ((hwa742_read_reg(HWA742_V_DISP_2_REG) & 0x3) << 8); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 809 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 810 hndp = hwa742_read_reg(HWA742_H_NDP_REG) & 0x7f; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 811 vndp = hwa742_read_reg(HWA742_V_NDP_REG); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 812 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 813 /* time to transfer one pixel (16bpp) in ps */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 814 hwa742.pix_tx_time = hwa742.reg_timings.we_cycle_time; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 815 if (hwa742.extif->get_max_tx_rate != NULL) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 816 /* aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 817 * The external interface might have a rate limitation, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 818 * if so, we have to maximize our transfer rate. aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 819 */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 820 unsigned long min_tx_time; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 821 unsigned long max_tx_rate = hwa742.extif->get_max_tx_rate(); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 822 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 823 dev_dbg(hwa742.fbdev->dev, "max_tx_rate %ld HZ\n", aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 824 max_tx_rate); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 825 min_tx_time = 1000000000 / (max_tx_rate / 1000); /* ps */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 826 if (hwa742.pix_tx_time < min_tx_time) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 827 hwa742.pix_tx_time = min_tx_time; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 828 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 829 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 830 /* time to update one line in ps */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 831 hwa742.line_upd_time = (hdisp + hndp) * 1000000 / (pix_clk / 1000); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 832 hwa742.line_upd_time *= 1000; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 833 if (hdisp * hwa742.pix_tx_time > hwa742.line_upd_time) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 834 /* aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 835 * transfer speed too low, we might have to use both aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 836 * HS and VS aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 837 */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 838 use_hsvs = 1; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 839 else aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 840 /* decent transfer speed, we'll always use only VS */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 841 use_hsvs = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 842 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 843 if (use_hsvs && (hs_pol_inv || vs_pol_inv)) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 844 /* aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 845 * HS or'ed with VS doesn't work, use the active high aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 846 * TE signal based on HNDP / VNDP aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 847 */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 848 use_ndp = 1; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 849 hs_pol_inv = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 850 vs_pol_inv = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 851 hs = hndp; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 852 vs = vndp; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 853 } else { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 854 /* aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 855 * Use HS or'ed with VS as a TE signal if both are needed aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 856 * or VNDP if only vsync is needed. aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 857 */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 858 use_ndp = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 859 hs = hsw; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 860 vs = vsw; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 861 if (!use_hsvs) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 862 hs_pol_inv = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 863 vs_pol_inv = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 864 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 865 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 866 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 867 hs = hs * 1000000 / (pix_clk / 1000); /* ps */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 868 hs *= 1000; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 869 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 870 vs = vs * (hdisp + hndp) * 1000000 / (pix_clk / 1000); /* ps */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 871 vs *= 1000; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 872 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 873 if (vs <= hs) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 874 return -EDOM; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 875 /* set VS to 120% of HS to minimize VS detection time */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 876 vs = hs * 12 / 10; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 877 /* minimize HS too */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 878 hs = 10000; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 879 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 880 b = hwa742_read_reg(HWA742_NDP_CTRL); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 881 b &= ~0x3; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 882 b |= use_hsvs ? 1 : 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 883 b |= (use_ndp && use_hsvs) ? 0 : 2; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 884 hwa742_write_reg(HWA742_NDP_CTRL, b); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 885 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 886 hwa742.vsync_only = !use_hsvs; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 887 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 888 dev_dbg(hwa742.fbdev->dev, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 889 "pix_clk %ld HZ pix_tx_time %ld ps line_upd_time %ld ps\n", aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 890 pix_clk, hwa742.pix_tx_time, hwa742.line_upd_time); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 891 dev_dbg(hwa742.fbdev->dev, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 892 "hs %d ps vs %d ps mode %d vsync_only %d\n", aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 893 hs, vs, (b & 0x3), !use_hsvs); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 894 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 895 return hwa742.extif->setup_tearsync(1, hs, vs, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 896 hs_pol_inv, vs_pol_inv, extif_div); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 897 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 898 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 899 static void hwa742_get_caps(int plane, struct omapfb_caps *caps) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 900 { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 901 hwa742.int_ctrl->get_caps(plane, caps); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 902 caps->ctrl |= OMAPFB_CAPS_MANUAL_UPDATE | aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 903 OMAPFB_CAPS_WINDOW_PIXEL_DOUBLE; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 904 if (hwa742.te_connected) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 905 caps->ctrl |= OMAPFB_CAPS_TEARSYNC; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 906 caps->wnd_color |= (1 << OMAPFB_COLOR_RGB565) | aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 907 (1 << OMAPFB_COLOR_YUV420); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 908 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 909 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 910 static void hwa742_suspend(void) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 911 { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 912 hwa742.update_mode_before_suspend = hwa742.update_mode; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 913 hwa742_set_update_mode(OMAPFB_UPDATE_DISABLED); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 914 /* Enable sleep mode */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 915 hwa742_write_reg(HWA742_POWER_SAVE, 1 << 1); 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 916 clk_disable(hwa742.sys_ck); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 917 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 918 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 919 static void hwa742_resume(void) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 920 { 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 921 clk_enable(hwa742.sys_ck); 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 922 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 923 /* Disable sleep mode */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 924 hwa742_write_reg(HWA742_POWER_SAVE, 0); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 925 while (1) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 926 /* Loop until PLL output is stabilized */ aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 927 if (hwa742_read_reg(HWA742_PLL_DIV_REG) & (1 << 7)) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 928 break; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 929 set_current_state(TASK_UNINTERRUPTIBLE); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 930 schedule_timeout(msecs_to_jiffies(5)); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 931 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 932 hwa742_set_update_mode(hwa742.update_mode_before_suspend); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 933 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 934 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 935 static int hwa742_init(struct omapfb_device *fbdev, int ext_mode, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 936 struct omapfb_mem_desc *req_vram) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 937 { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 938 int r = 0, i; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 939 u8 rev, conf; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 940 unsigned long ext_clk; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 941 unsigned long sys_clk, pix_clk; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 942 int extif_mem_div; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 @943 struct omapfb_platform_data *omapfb_conf; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 944 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 945 BUG_ON(!fbdev->ext_if || !fbdev->int_ctrl); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 946 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 947 hwa742.fbdev = fbdev; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 948 hwa742.extif = fbdev->ext_if; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 949 hwa742.int_ctrl = fbdev->int_ctrl; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 950 dffb3b47baf472 drivers/video/omap/hwa742.c Jingoo Han 2013-09-17 951 omapfb_conf = dev_get_platdata(fbdev->dev); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 952 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 953 hwa742.sys_ck = clk_get(NULL, "hwa_sys_ck"); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 954 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 955 spin_lock_init(&hwa742.req_lock); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 956 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 957 if ((r = hwa742.int_ctrl->init(fbdev, 1, req_vram)) < 0) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 958 goto err1; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 959 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 960 if ((r = hwa742.extif->init(fbdev)) < 0) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 961 goto err2; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 962 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 963 ext_clk = clk_get_rate(hwa742.sys_ck); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 964 if ((r = calc_extif_timings(ext_clk, &extif_mem_div)) < 0) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 965 goto err3; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 966 hwa742.extif->set_timings(&hwa742.reg_timings); 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 967 clk_enable(hwa742.sys_ck); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 968 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 969 calc_hwa742_clk_rates(ext_clk, &sys_clk, &pix_clk); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 970 if ((r = calc_extif_timings(sys_clk, &extif_mem_div)) < 0) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 971 goto err4; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 972 hwa742.extif->set_timings(&hwa742.reg_timings); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 973 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 974 rev = hwa742_read_reg(HWA742_REV_CODE_REG); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 975 if ((rev & 0xfc) != 0x80) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 976 dev_err(fbdev->dev, "HWA742: invalid revision %02x\n", rev); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 977 r = -ENODEV; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 978 goto err4; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 979 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 980 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 981 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 982 if (!(hwa742_read_reg(HWA742_PLL_DIV_REG) & 0x80)) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 983 dev_err(fbdev->dev, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 984 "HWA742: controller not initialized by the bootloader\n"); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 985 r = -ENODEV; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 986 goto err4; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 987 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 988 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 989 if ((r = setup_tearsync(pix_clk, extif_mem_div)) < 0) { aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 990 dev_err(hwa742.fbdev->dev, aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 991 "HWA742: can't setup tearing synchronization\n"); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 992 goto err4; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 993 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 994 hwa742.te_connected = 1; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 995 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 996 hwa742.max_transmit_size = hwa742.extif->max_transmit_size; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 997 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 998 hwa742.update_mode = OMAPFB_UPDATE_DISABLED; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 999 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1000 hwa742.auto_update_window.x = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1001 hwa742.auto_update_window.y = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1002 hwa742.auto_update_window.width = fbdev->panel->x_res; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1003 hwa742.auto_update_window.height = fbdev->panel->y_res; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1004 hwa742.auto_update_window.format = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1005 6c78935777d12e drivers/video/fbdev/omap/hwa742.c Kees Cook 2017-11-10 1006 timer_setup(&hwa742.auto_update_timer, hwa742_update_window_auto, 0); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1007 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1008 hwa742.prev_color_mode = -1; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1009 hwa742.prev_flags = 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1010 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1011 hwa742.fbdev = fbdev; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1012 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1013 INIT_LIST_HEAD(&hwa742.free_req_list); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1014 INIT_LIST_HEAD(&hwa742.pending_req_list); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1015 for (i = 0; i < ARRAY_SIZE(hwa742.req_pool); i++) aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1016 list_add(&hwa742.req_pool[i].entry, &hwa742.free_req_list); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1017 BUG_ON(i <= IRQ_REQ_POOL_SIZE); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1018 sema_init(&hwa742.req_sema, i - IRQ_REQ_POOL_SIZE); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1019 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1020 conf = hwa742_read_reg(HWA742_CONFIG_REG); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1021 dev_info(fbdev->dev, ": Epson HWA742 LCD controller rev %d " aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1022 "initialized (CNF pins %x)\n", rev & 0x03, conf & 0x07); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1023 aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1024 return 0; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1025 err4: 088962c243db42 drivers/video/omap/hwa742.c Andrew de Quincey 2009-05-28 1026 clk_disable(hwa742.sys_ck); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1027 err3: aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1028 hwa742.extif->cleanup(); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1029 err2: aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1030 hwa742.int_ctrl->cleanup(); aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1031 err1: aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1032 return r; aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1033 } aae76ef13e348c drivers/video/omap/hwa742.c Imre Deak 2007-05-26 1034 :::::: The code at line 791 was first introduced by commit :::::: aae76ef13e348cebac225407ea2c452f8d0ff862 OMAP: add external Epson HWA742 LCD controller support :::::: TO: Imre Deak :::::: CC: Linus Torvalds -- 0-DAY CI Kernel Test Service https://01.org/lkp