Re: [PATCH v1 1/2] drm/stm: ltdc: add non-alpha color formats

From: kbuild test robot
Date: Mon Feb 05 2018 - 14:23:49 EST


Hi Philippe,

I love your patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.15 next-20180205]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Philippe-Cornu/drm-stm-ltdc-add-non-alpha-color-formats/20180201-211736
base: git://people.freedesktop.org/~airlied/linux.git drm-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.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
make.cross ARCH=arm

All errors (new ones prefixed by >>):

drivers/gpu//drm/stm/ltdc.c: In function 'ltdc_plane_atomic_update':
>> drivers/gpu//drm/stm/ltdc.c:661:17: error: 'const struct drm_format_info' has no member named 'has_alpha'
if (!fb->format->has_alpha)
^~

vim +661 drivers/gpu//drm/stm/ltdc.c

587
588 static void ltdc_plane_atomic_update(struct drm_plane *plane,
589 struct drm_plane_state *oldstate)
590 {
591 struct ltdc_device *ldev = plane_to_ltdc(plane);
592 struct drm_plane_state *state = plane->state;
593 struct drm_framebuffer *fb = state->fb;
594 u32 lofs = plane->index * LAY_OFS;
595 u32 x0 = state->crtc_x;
596 u32 x1 = state->crtc_x + state->crtc_w - 1;
597 u32 y0 = state->crtc_y;
598 u32 y1 = state->crtc_y + state->crtc_h - 1;
599 u32 src_x, src_y, src_w, src_h;
600 u32 val, pitch_in_bytes, line_length, paddr, ahbp, avbp, bpcr;
601 enum ltdc_pix_fmt pf;
602
603 if (!state->crtc || !fb) {
604 DRM_DEBUG_DRIVER("fb or crtc NULL");
605 return;
606 }
607
608 /* convert src_ from 16:16 format */
609 src_x = state->src_x >> 16;
610 src_y = state->src_y >> 16;
611 src_w = state->src_w >> 16;
612 src_h = state->src_h >> 16;
613
614 DRM_DEBUG_DRIVER("plane:%d fb:%d (%dx%d)@(%d,%d) -> (%dx%d)@(%d,%d)\n",
615 plane->base.id, fb->base.id,
616 src_w, src_h, src_x, src_y,
617 state->crtc_w, state->crtc_h,
618 state->crtc_x, state->crtc_y);
619
620 bpcr = reg_read(ldev->regs, LTDC_BPCR);
621 ahbp = (bpcr & BPCR_AHBP) >> 16;
622 avbp = bpcr & BPCR_AVBP;
623
624 /* Configures the horizontal start and stop position */
625 val = ((x1 + 1 + ahbp) << 16) + (x0 + 1 + ahbp);
626 reg_update_bits(ldev->regs, LTDC_L1WHPCR + lofs,
627 LXWHPCR_WHSTPOS | LXWHPCR_WHSPPOS, val);
628
629 /* Configures the vertical start and stop position */
630 val = ((y1 + 1 + avbp) << 16) + (y0 + 1 + avbp);
631 reg_update_bits(ldev->regs, LTDC_L1WVPCR + lofs,
632 LXWVPCR_WVSTPOS | LXWVPCR_WVSPPOS, val);
633
634 /* Specifies the pixel format */
635 pf = to_ltdc_pixelformat(fb->format->format);
636 for (val = 0; val < NB_PF; val++)
637 if (ldev->caps.pix_fmt_hw[val] == pf)
638 break;
639
640 if (val == NB_PF) {
641 DRM_ERROR("Pixel format %.4s not supported\n",
642 (char *)&fb->format->format);
643 val = 0; /* set by default ARGB 32 bits */
644 }
645 reg_update_bits(ldev->regs, LTDC_L1PFCR + lofs, LXPFCR_PF, val);
646
647 /* Configures the color frame buffer pitch in bytes & line length */
648 pitch_in_bytes = fb->pitches[0];
649 line_length = drm_format_plane_cpp(fb->format->format, 0) *
650 (x1 - x0 + 1) + (ldev->caps.bus_width >> 3) - 1;
651 val = ((pitch_in_bytes << 16) | line_length);
652 reg_update_bits(ldev->regs, LTDC_L1CFBLR + lofs,
653 LXCFBLR_CFBLL | LXCFBLR_CFBP, val);
654
655 /* Specifies the constant alpha value */
656 val = CONSTA_MAX;
657 reg_update_bits(ldev->regs, LTDC_L1CACR + lofs, LXCACR_CONSTA, val);
658
659 /* Specifies the blending factors */
660 val = BF1_PAXCA | BF2_1PAXCA;
> 661 if (!fb->format->has_alpha)
662 val = BF1_CA | BF2_1CA;
663
664 reg_update_bits(ldev->regs, LTDC_L1BFCR + lofs,
665 LXBFCR_BF2 | LXBFCR_BF1, val);
666
667 /* Configures the frame buffer line number */
668 val = y1 - y0 + 1;
669 reg_update_bits(ldev->regs, LTDC_L1CFBLNR + lofs, LXCFBLNR_CFBLN, val);
670
671 /* Sets the FB address */
672 paddr = (u32)drm_fb_cma_get_gem_addr(fb, state, 0);
673
674 DRM_DEBUG_DRIVER("fb: phys 0x%08x", paddr);
675 reg_write(ldev->regs, LTDC_L1CFBAR + lofs, paddr);
676
677 /* Enable layer and CLUT if needed */
678 val = fb->format->format == DRM_FORMAT_C8 ? LXCR_CLUTEN : 0;
679 val |= LXCR_LEN;
680 reg_update_bits(ldev->regs, LTDC_L1CR + lofs,
681 LXCR_LEN | LXCR_CLUTEN, val);
682
683 mutex_lock(&ldev->err_lock);
684 if (ldev->error_status & ISR_FUIF) {
685 DRM_DEBUG_DRIVER("Fifo underrun\n");
686 ldev->error_status &= ~ISR_FUIF;
687 }
688 if (ldev->error_status & ISR_TERRIF) {
689 DRM_DEBUG_DRIVER("Transfer error\n");
690 ldev->error_status &= ~ISR_TERRIF;
691 }
692 mutex_unlock(&ldev->err_lock);
693 }
694

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip