Hi Maxime, I love your patch! Yet something to improve:
[auto build test ERROR on ] url: https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-sun4i-rgb-Relax-the-pixel-clock-check/20190227-012757 base: config: arm-allmodconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 8.2.0-11) 8.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=8.2.0 make.cross ARCH=arm All errors (new ones prefixed by >>): >> drivers/gpu//drm/sun4i/sun4i_rgb.c:62:1: error: unknown type name 'DEFINE'; >> did you mean 'EPIPE'? DEFINE SUN4I_RGB_DOTCLOCK_TOLERANCE 5 ^~~~~~ EPIPE >> drivers/gpu//drm/sun4i/sun4i_rgb.c:62:37: error: expected '=', ',', ';', >> 'asm' or '__attribute__' before numeric constant DEFINE SUN4I_RGB_DOTCLOCK_TOLERANCE 5 ^ >> drivers/gpu//drm/sun4i/sun4i_rgb.c:191:16: error: 'sun4i_rgb_mode_valid' >> undeclared here (not in a function); did you mean 'sun4i_rgb_con_funcs'? .mode_valid = sun4i_rgb_mode_valid, ^~~~~~~~~~~~~~~~~~~~ sun4i_rgb_con_funcs vim +191 drivers/gpu//drm/sun4i/sun4i_rgb.c 29e57fab9 Maxime Ripard 2015-10-29 55 3c3671edd Maxime Ripard 2019-02-26 56 /* 3c3671edd Maxime Ripard 2019-02-26 57 * VESA DMT defines a tolerance of 0.5% on the pixel clock, while the 3c3671edd Maxime Ripard 2019-02-26 58 * CVT spec reuses that tolerance in its examples, so it looks to be a 3c3671edd Maxime Ripard 2019-02-26 59 * good default tolerance for the EDID-based modes. Define it to 5 per 3c3671edd Maxime Ripard 2019-02-26 60 * mille to avoid floating point operations. 3c3671edd Maxime Ripard 2019-02-26 61 */ 3c3671edd Maxime Ripard 2019-02-26 @62 DEFINE SUN4I_RGB_DOTCLOCK_TOLERANCE 5 3c3671edd Maxime Ripard 2019-02-26 63 cde8b7548 Giulio Benetti 2018-03-13 64 static enum drm_mode_status sun4i_rgb_mode_valid(struct drm_encoder *crtc, cde8b7548 Giulio Benetti 2018-03-13 65 const struct drm_display_mode *mode) 29e57fab9 Maxime Ripard 2015-10-29 66 { cde8b7548 Giulio Benetti 2018-03-13 67 struct sun4i_rgb *rgb = drm_encoder_to_sun4i_rgb(crtc); b9c8506cb Chen-Yu Tsai 2017-02-23 68 struct sun4i_tcon *tcon = rgb->tcon; 29e57fab9 Maxime Ripard 2015-10-29 69 u32 hsync = mode->hsync_end - mode->hsync_start; 29e57fab9 Maxime Ripard 2015-10-29 70 u32 vsync = mode->vsync_end - mode->vsync_start; 7659a82a3 Maxime Ripard 2019-02-26 71 unsigned long long rate = mode->clock * 1000; 3c3671edd Maxime Ripard 2019-02-26 72 unsigned long long lowest, highest; 7659a82a3 Maxime Ripard 2019-02-26 73 unsigned long long rounded_rate; 29e57fab9 Maxime Ripard 2015-10-29 74 29e57fab9 Maxime Ripard 2015-10-29 75 DRM_DEBUG_DRIVER("Validating modes...\n"); 29e57fab9 Maxime Ripard 2015-10-29 76 29e57fab9 Maxime Ripard 2015-10-29 77 if (hsync < 1) 29e57fab9 Maxime Ripard 2015-10-29 78 return MODE_HSYNC_NARROW; 29e57fab9 Maxime Ripard 2015-10-29 79 29e57fab9 Maxime Ripard 2015-10-29 80 if (hsync > 0x3ff) 29e57fab9 Maxime Ripard 2015-10-29 81 return MODE_HSYNC_WIDE; 29e57fab9 Maxime Ripard 2015-10-29 82 29e57fab9 Maxime Ripard 2015-10-29 83 if ((mode->hdisplay < 1) || (mode->htotal < 1)) 29e57fab9 Maxime Ripard 2015-10-29 84 return MODE_H_ILLEGAL; 29e57fab9 Maxime Ripard 2015-10-29 85 29e57fab9 Maxime Ripard 2015-10-29 86 if ((mode->hdisplay > 0x7ff) || (mode->htotal > 0xfff)) 29e57fab9 Maxime Ripard 2015-10-29 87 return MODE_BAD_HVALUE; 29e57fab9 Maxime Ripard 2015-10-29 88 29e57fab9 Maxime Ripard 2015-10-29 89 DRM_DEBUG_DRIVER("Horizontal parameters OK\n"); 29e57fab9 Maxime Ripard 2015-10-29 90 29e57fab9 Maxime Ripard 2015-10-29 91 if (vsync < 1) 29e57fab9 Maxime Ripard 2015-10-29 92 return MODE_VSYNC_NARROW; 29e57fab9 Maxime Ripard 2015-10-29 93 29e57fab9 Maxime Ripard 2015-10-29 94 if (vsync > 0x3ff) 29e57fab9 Maxime Ripard 2015-10-29 95 return MODE_VSYNC_WIDE; 29e57fab9 Maxime Ripard 2015-10-29 96 29e57fab9 Maxime Ripard 2015-10-29 97 if ((mode->vdisplay < 1) || (mode->vtotal < 1)) 29e57fab9 Maxime Ripard 2015-10-29 98 return MODE_V_ILLEGAL; 29e57fab9 Maxime Ripard 2015-10-29 99 29e57fab9 Maxime Ripard 2015-10-29 100 if ((mode->vdisplay > 0x7ff) || (mode->vtotal > 0xfff)) 29e57fab9 Maxime Ripard 2015-10-29 101 return MODE_BAD_VVALUE; 29e57fab9 Maxime Ripard 2015-10-29 102 29e57fab9 Maxime Ripard 2015-10-29 103 DRM_DEBUG_DRIVER("Vertical parameters OK\n"); 29e57fab9 Maxime Ripard 2015-10-29 104 3c3671edd Maxime Ripard 2019-02-26 105 /* 3c3671edd Maxime Ripard 2019-02-26 106 * TODO: We should use the struct display_timing if available 3c3671edd Maxime Ripard 2019-02-26 107 * and / or trying to stretch the timings within that 3c3671edd Maxime Ripard 2019-02-26 108 * tolerancy to take care of panels that we wouldn't be able 3c3671edd Maxime Ripard 2019-02-26 109 * to have a exact match for. 3c3671edd Maxime Ripard 2019-02-26 110 */ 3c3671edd Maxime Ripard 2019-02-26 111 if (rgb->panel) { 3c3671edd Maxime Ripard 2019-02-26 112 DRM_DEBUG_DRIVER("RGB panel used, skipping clock rate checks"); 3c3671edd Maxime Ripard 2019-02-26 113 goto out; 3c3671edd Maxime Ripard 2019-02-26 114 } 3c3671edd Maxime Ripard 2019-02-26 115 3c3671edd Maxime Ripard 2019-02-26 116 /* 3c3671edd Maxime Ripard 2019-02-26 117 * That shouldn't ever happen unless something is really wrong, but it 3c3671edd Maxime Ripard 2019-02-26 118 * doesn't harm to check. 3c3671edd Maxime Ripard 2019-02-26 119 */ 3c3671edd Maxime Ripard 2019-02-26 120 if (!rgb->bridge) 3c3671edd Maxime Ripard 2019-02-26 121 goto out; 3c3671edd Maxime Ripard 2019-02-26 122 5af894bd2 Maxime Ripard 2018-02-21 123 tcon->dclk_min_div = 6; 5af894bd2 Maxime Ripard 2018-02-21 124 tcon->dclk_max_div = 127; bb43d40d7 Maxime Ripard 2016-04-21 125 rounded_rate = clk_round_rate(tcon->dclk, rate); 3c3671edd Maxime Ripard 2019-02-26 126 3c3671edd Maxime Ripard 2019-02-26 127 lowest = rate * (1000 - SUN4I_RGB_DOTCLOCK_TOLERANCE); 3c3671edd Maxime Ripard 2019-02-26 128 do_div(lowest, 1000); 3c3671edd Maxime Ripard 2019-02-26 129 if (rounded_rate < lowest) bb43d40d7 Maxime Ripard 2016-04-21 130 return MODE_CLOCK_LOW; bb43d40d7 Maxime Ripard 2016-04-21 131 3c3671edd Maxime Ripard 2019-02-26 132 highest = rate * (1000 + SUN4I_RGB_DOTCLOCK_TOLERANCE); 3c3671edd Maxime Ripard 2019-02-26 133 do_div(highest, 1000); 3c3671edd Maxime Ripard 2019-02-26 134 if (rounded_rate > highest) bb43d40d7 Maxime Ripard 2016-04-21 135 return MODE_CLOCK_HIGH; bb43d40d7 Maxime Ripard 2016-04-21 136 3c3671edd Maxime Ripard 2019-02-26 137 out: bb43d40d7 Maxime Ripard 2016-04-21 138 DRM_DEBUG_DRIVER("Clock rate OK\n"); bb43d40d7 Maxime Ripard 2016-04-21 139 29e57fab9 Maxime Ripard 2015-10-29 140 return MODE_OK; 29e57fab9 Maxime Ripard 2015-10-29 141 } 29e57fab9 Maxime Ripard 2015-10-29 142 29e57fab9 Maxime Ripard 2015-10-29 143 static struct drm_connector_helper_funcs sun4i_rgb_con_helper_funcs = { 29e57fab9 Maxime Ripard 2015-10-29 144 .get_modes = sun4i_rgb_get_modes, 29e57fab9 Maxime Ripard 2015-10-29 145 }; 29e57fab9 Maxime Ripard 2015-10-29 146 29e57fab9 Maxime Ripard 2015-10-29 147 static void 29e57fab9 Maxime Ripard 2015-10-29 148 sun4i_rgb_connector_destroy(struct drm_connector *connector) 29e57fab9 Maxime Ripard 2015-10-29 149 { 29e57fab9 Maxime Ripard 2015-10-29 150 struct sun4i_rgb *rgb = drm_connector_to_sun4i_rgb(connector); 29e57fab9 Maxime Ripard 2015-10-29 151 b413dde1a Maxime Ripard 2019-02-26 152 drm_panel_detach(rgb->panel); 29e57fab9 Maxime Ripard 2015-10-29 153 drm_connector_cleanup(connector); 29e57fab9 Maxime Ripard 2015-10-29 154 } 29e57fab9 Maxime Ripard 2015-10-29 155 32b4d5756 Bhumika Goyal 2017-08-08 156 static const struct drm_connector_funcs sun4i_rgb_con_funcs = { 29e57fab9 Maxime Ripard 2015-10-29 157 .fill_modes = drm_helper_probe_single_connector_modes, 29e57fab9 Maxime Ripard 2015-10-29 158 .destroy = sun4i_rgb_connector_destroy, 29e57fab9 Maxime Ripard 2015-10-29 159 .reset = drm_atomic_helper_connector_reset, 29e57fab9 Maxime Ripard 2015-10-29 160 .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, 29e57fab9 Maxime Ripard 2015-10-29 161 .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, 29e57fab9 Maxime Ripard 2015-10-29 162 }; 29e57fab9 Maxime Ripard 2015-10-29 163 29e57fab9 Maxime Ripard 2015-10-29 164 static void sun4i_rgb_encoder_enable(struct drm_encoder *encoder) 29e57fab9 Maxime Ripard 2015-10-29 165 { 29e57fab9 Maxime Ripard 2015-10-29 166 struct sun4i_rgb *rgb = drm_encoder_to_sun4i_rgb(encoder); 29e57fab9 Maxime Ripard 2015-10-29 167 29e57fab9 Maxime Ripard 2015-10-29 168 DRM_DEBUG_DRIVER("Enabling RGB output\n"); 29e57fab9 Maxime Ripard 2015-10-29 169 b413dde1a Maxime Ripard 2019-02-26 170 if (rgb->panel) { b413dde1a Maxime Ripard 2019-02-26 171 drm_panel_prepare(rgb->panel); b413dde1a Maxime Ripard 2019-02-26 172 drm_panel_enable(rgb->panel); 29e57fab9 Maxime Ripard 2015-10-29 173 } 45e88f994 Maxime Ripard 2017-10-17 174 } 29e57fab9 Maxime Ripard 2015-10-29 175 29e57fab9 Maxime Ripard 2015-10-29 176 static void sun4i_rgb_encoder_disable(struct drm_encoder *encoder) 29e57fab9 Maxime Ripard 2015-10-29 177 { 29e57fab9 Maxime Ripard 2015-10-29 178 struct sun4i_rgb *rgb = drm_encoder_to_sun4i_rgb(encoder); 29e57fab9 Maxime Ripard 2015-10-29 179 29e57fab9 Maxime Ripard 2015-10-29 180 DRM_DEBUG_DRIVER("Disabling RGB output\n"); 29e57fab9 Maxime Ripard 2015-10-29 181 b413dde1a Maxime Ripard 2019-02-26 182 if (rgb->panel) { b413dde1a Maxime Ripard 2019-02-26 183 drm_panel_disable(rgb->panel); b413dde1a Maxime Ripard 2019-02-26 184 drm_panel_unprepare(rgb->panel); 4b3095025 Jonathan Liu 2016-08-30 185 } 45e88f994 Maxime Ripard 2017-10-17 186 } 29e57fab9 Maxime Ripard 2015-10-29 187 29e57fab9 Maxime Ripard 2015-10-29 188 static struct drm_encoder_helper_funcs sun4i_rgb_enc_helper_funcs = { 29e57fab9 Maxime Ripard 2015-10-29 189 .disable = sun4i_rgb_encoder_disable, 29e57fab9 Maxime Ripard 2015-10-29 190 .enable = sun4i_rgb_encoder_enable, cde8b7548 Giulio Benetti 2018-03-13 @191 .mode_valid = sun4i_rgb_mode_valid, 29e57fab9 Maxime Ripard 2015-10-29 192 }; 29e57fab9 Maxime Ripard 2015-10-29 193 :::::: The code at line 191 was first introduced by commit :::::: cde8b7548272640437d2fa691ae211f940066f6b drm/sun4i: move rgb mode_valid from connector to encoder :::::: TO: Giulio Benetti <giulio.bene...@micronovasrl.com> :::::: CC: Maxime Ripard <maxime.rip...@bootlin.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip
_______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel