From: kernel test robot <lkp@intel.com>
To: Sasha Finkelstein <fnkl.kernel@gmail.com>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [asahilinux:pr/137 1/5] drivers/gpu/drm/adp/adp_drv.c:402:5: warning: no previous prototype for 'adp_detect_ctx'
Date: Mon, 1 May 2023 05:32:53 +0800 [thread overview]
Message-ID: <202305010505.FXcGpsDb-lkp@intel.com> (raw)
tree: https://github.com/AsahiLinux/linux pr/137
head: dbcd8647ff8abbc3a564e43ed16575a89fa585d3
commit: 07c9f583443dee637776b42db1da3a093a994bde [1/5] gpu: drm: adp: Add Apple Display Pipe driver
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20230501/202305010505.FXcGpsDb-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 12.1.0
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
# https://github.com/AsahiLinux/linux/commit/07c9f583443dee637776b42db1da3a093a994bde
git remote add asahilinux https://github.com/AsahiLinux/linux
git fetch --no-tags asahilinux pr/137
git checkout 07c9f583443dee637776b42db1da3a093a994bde
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/gpu/drm/adp/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202305010505.FXcGpsDb-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/gpu/drm/adp/adp_drv.c:220:19: warning: no previous prototype for 'adp_plane_new' [-Wmissing-prototypes]
220 | struct adp_plane *adp_plane_new(struct adp_drv_private *adp, u8 id)
| ^~~~~~~~~~~~~
>> drivers/gpu/drm/adp/adp_drv.c:402:5: warning: no previous prototype for 'adp_detect_ctx' [-Wmissing-prototypes]
402 | int adp_detect_ctx(struct drm_connector *connector,
| ^~~~~~~~~~~~~~
vim +/adp_detect_ctx +402 drivers/gpu/drm/adp/adp_drv.c
219
> 220 struct adp_plane *adp_plane_new(struct adp_drv_private *adp, u8 id)
221 {
222 struct drm_device *drm = &adp->drm;
223 struct adp_plane *plane;
224 enum drm_plane_type plane_type;
225
226 plane_type = (id == 0) ? DRM_PLANE_TYPE_PRIMARY :
227 DRM_PLANE_TYPE_OVERLAY;
228
229 plane = drmm_universal_plane_alloc(drm, struct adp_plane, base_plane,
230 ALL_CRTCS, &adp_plane_funcs,
231 plane_formats, ARRAY_SIZE(plane_formats),
232 NULL, plane_type, "plane %d", id);
233 if (!plane) {
234 drm_err(drm, "failed to allocate plane");
235 return ERR_PTR(-ENOMEM);
236 }
237 plane->id = id;
238
239 drm_plane_helper_add(&plane->base_plane, &adp_plane_helper_funcs);
240 return plane;
241 }
242
243 static void adp_enable_vblank(struct adp_drv_private *adp)
244 {
245 u32 cur_ctrl;
246
247 writel(ADP_INT_STATUS_INT_MASK, adp->fe + ADP_INT_STATUS);
248
249 cur_ctrl = readl(adp->fe + ADP_CTRL);
250 writel(cur_ctrl | ADP_CTRL_VBLANK_ON, adp->fe + ADP_CTRL);
251 }
252
253 static int adp_crtc_enable_vblank(struct drm_crtc *crtc)
254 {
255 struct drm_device *dev = crtc->dev;
256 struct adp_drv_private *adp = to_adp(dev);
257 adp_enable_vblank(adp);
258
259 return 0;
260 }
261
262 static void adp_disable_vblank(struct adp_drv_private *adp)
263 {
264 u32 cur_ctrl;
265
266 cur_ctrl = readl(adp->fe + ADP_CTRL);
267 writel(cur_ctrl & ~ADP_CTRL_VBLANK_ON, adp->fe + ADP_CTRL);
268 writel(ADP_INT_STATUS_INT_MASK, adp->fe + ADP_INT_STATUS);
269 }
270
271 static void adp_crtc_disable_vblank(struct drm_crtc *crtc)
272 {
273 struct drm_device *dev = crtc->dev;
274 struct adp_drv_private *adp = to_adp(dev);
275
276 adp_disable_vblank(adp);
277 }
278
279
280 static void adp_crtc_atomic_enable(struct drm_crtc *crtc,
281 struct drm_atomic_state *state)
282 {
283 struct adp_drv_private *adp = crtc_to_adp(crtc);
284 writel(0x1, adp->be + ADBE_BLEND_EN2);
285 writel(0x10, adp->be + ADBE_BLEND_EN1);
286 writel(0x1, adp->be + ADBE_BLEND_EN3);
287 writel(0x1, adp->be + ADBE_BLEND_BYPASS);
288 writel(0x1, adp->be + ADBE_BLEND_EN4);
289 }
290
291 static void adp_crtc_atomic_disable(struct drm_crtc *crtc,
292 struct drm_atomic_state *state)
293 {
294 struct adp_drv_private *adp = crtc_to_adp(crtc);
295 struct drm_crtc_state *old_state = drm_atomic_get_old_crtc_state(state, crtc);
296
297 drm_atomic_helper_disable_planes_on_crtc(old_state, false);
298
299 writel(0x0, adp->be + ADBE_BLEND_EN2);
300 writel(0x0, adp->be + ADBE_BLEND_EN1);
301 writel(0x0, adp->be + ADBE_BLEND_EN3);
302 writel(0x0, adp->be + ADBE_BLEND_BYPASS);
303 writel(0x0, adp->be + ADBE_BLEND_EN4);
304 drm_crtc_vblank_off(crtc);
305 }
306
307 static void adp_crtc_atomic_flush(struct drm_crtc *crtc,
308 struct drm_atomic_state *state)
309 {
310 u32 frame_num = 1;
311 struct adp_drv_private *adp = crtc_to_adp(crtc);
312 struct drm_crtc_state *new_state = drm_atomic_get_new_crtc_state(state, crtc);
313 u64 new_size = ALIGN(new_state->mode.hdisplay *
314 new_state->mode.vdisplay * 4, PAGE_SIZE);
315
316 if (new_size != adp->mask_buf_size) {
317 if (adp->mask_buf)
318 dma_free_coherent(crtc->dev->dev, adp->mask_buf_size,
319 adp->mask_buf, adp->mask_iova);
320 adp->mask_buf = NULL;
321 if (new_size != 0) {
322 adp->mask_buf = dma_alloc_coherent(crtc->dev->dev, new_size,
323 &adp->mask_iova, GFP_KERNEL);
324 memset(adp->mask_buf, 0xFF, new_size);
325 writel(adp->mask_iova, adp->be + ADBE_MASK_BUF);
326 }
327 adp->mask_buf_size = new_size;
328 }
329 writel(ADBE_FIFO_SYNC | frame_num, adp->be + ADBE_FIFO);
330 //FIXME: use adbe flush interrupt
331 spin_lock_irq(&crtc->dev->event_lock);
332 if (crtc->state->event) {
333 drm_crtc_vblank_get(crtc);
334 adp->event = crtc->state->event;
335 }
336 crtc->state->event = NULL;
337 spin_unlock_irq(&crtc->dev->event_lock);
338 }
339
340 static const struct drm_crtc_funcs adp_crtc_funcs = {
341 .destroy = drm_crtc_cleanup,
342 .set_config = drm_atomic_helper_set_config,
343 .page_flip = drm_atomic_helper_page_flip,
344 .reset = drm_atomic_helper_crtc_reset,
345 .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
346 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
347 .enable_vblank = adp_crtc_enable_vblank,
348 .disable_vblank = adp_crtc_disable_vblank,
349 };
350
351
352 static const struct drm_crtc_helper_funcs adp_crtc_helper_funcs = {
353 .atomic_enable = adp_crtc_atomic_enable,
354 .atomic_disable = adp_crtc_atomic_disable,
355 .atomic_flush = adp_crtc_atomic_flush,
356 };
357
358 static int adp_setup_crtc(struct adp_drv_private *adp)
359 {
360 struct drm_device *drm = &adp->drm;
361 struct adp_plane *primary;
362 int ret;
363
364 primary = adp_plane_new(adp, 0);
365 if (IS_ERR(primary))
366 return PTR_ERR(primary);
367
368 ret = drm_crtc_init_with_planes(drm, &adp->crtc, &primary->base_plane,
369 NULL, &adp_crtc_funcs, NULL);
370 if (ret)
371 return ret;
372
373 drm_crtc_helper_add(&adp->crtc, &adp_crtc_helper_funcs);
374 return 0;
375 }
376
377 static int adp_get_modes(struct drm_connector *connector)
378 {
379 struct adp_drv_private *adp = conn_to_adp(connector);
380 struct drm_display_mode *mode;
381 u32 size;
382
383 size = readl(adp->fe + ADP_SCREEN_SIZE);
384 mode = drm_mode_create(connector->dev);
385
386 mode->vdisplay = size >> 16;
387 mode->hdisplay = size & 0xFFFF;
388 mode->hsync_start = mode->hdisplay + 8;
389 mode->hsync_end = mode->hsync_start + 80;
390 mode->htotal = mode->hsync_end + 40;
391 mode->vsync_start = mode->vdisplay + 1;
392 mode->vsync_end = mode->vsync_start + 15;
393 mode->vtotal = mode->vsync_end + 6;
394 mode->clock = (mode->vtotal * mode->htotal * 60) / 1000;
395 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
396 mode->flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC;
397 drm_mode_set_name(mode);
398 drm_mode_probed_add(connector, mode);
399 return 1;
400 }
401
> 402 int adp_detect_ctx(struct drm_connector *connector,
403 struct drm_modeset_acquire_ctx *ctx,
404 bool force) {
405 connector->display_info.non_desktop = true;
406 drm_object_property_set_value(&connector->base,
407 connector->dev->mode_config.non_desktop_property,
408 connector->display_info.non_desktop);
409 return connector_status_connected;
410 }
411
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
reply other threads:[~2023-04-30 21:33 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202305010505.FXcGpsDb-lkp@intel.com \
--to=lkp@intel.com \
--cc=fnkl.kernel@gmail.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.