All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [chrome-os:chromeos-6.6 29/29] drivers/gpu/drm/mediatek/mtk_crtc.c:2029:27: error: 'struct mtk_crtc' has no member named 'fast_modeset_done'
Date: Wed, 05 Aug 2026 12:36:23 +0800	[thread overview]
Message-ID: <202608051229.vIqCwwpU-lkp@intel.com> (raw)

tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-6.6
head:   1213fba9236ab86f264ce386ca98c8c671f6cb55
commit: d987a15a211de927eda62988be34f608ebeed65e [29/29] CHROMIUM: drm/mediatek: Fix spurious wakeup causing black screen
config: arm64-randconfig-002-20260805 (https://download.01.org/0day-ci/archive/20260805/202608051229.vIqCwwpU-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260805/202608051229.vIqCwwpU-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608051229.vIqCwwpU-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_update_srt_state':
   drivers/gpu/drm/mediatek/mtk_crtc.c:597:25: warning: variable 'state' set but not used [-Wunused-but-set-variable]
     struct mtk_crtc_state *state;
                            ^~~~~
   drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_atomic_flush':
   drivers/gpu/drm/mediatek/mtk_crtc.c:1649:17: error: 'struct mtk_crtc' has no member named 'cmdq_client'
       if (!mtk_crtc->cmdq_client.chan)
                    ^~
   drivers/gpu/drm/mediatek/mtk_crtc.c: At top level:
   drivers/gpu/drm/mediatek/mtk_crtc.c:1656:5: warning: no previous prototype for 'mtk_crtc_atomic_check' [-Wmissing-prototypes]
    int mtk_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state)
        ^~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/mediatek/mtk_crtc.c: In function 'mtk_crtc_create':
>> drivers/gpu/drm/mediatek/mtk_crtc.c:2029:27: error: 'struct mtk_crtc' has no member named 'fast_modeset_done'
     init_completion(&mtk_crtc->fast_modeset_done);
                              ^~
   At top level:
   drivers/gpu/drm/mediatek/mtk_crtc.c:557:13: warning: 'mtk_crtc_post_update_hrt_state' defined but not used [-Wunused-function]
    static void mtk_crtc_post_update_hrt_state(struct mtk_crtc *mtk_crtc)
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +2029 drivers/gpu/drm/mediatek/mtk_crtc.c

  1813	
  1814	int mtk_crtc_create(struct drm_device *drm_dev, enum mtk_crtc_path path_sel)
  1815	{
  1816		struct mtk_drm_private *priv = drm_dev->dev_private;
  1817		struct device *dev = drm_dev->dev;
  1818		struct mtk_crtc *mtk_crtc;
  1819		unsigned int num_comp_planes = 0;
  1820		int ret;
  1821		int i, j, k;
  1822		bool has_ctm = false;
  1823		uint gamma_lut_size = 0;
  1824		struct drm_crtc *tmp;
  1825		int crtc_i = 0;
  1826		struct mtk_drm_private *subsys_priv;
  1827		struct mtk_crtc_comp_info path[DDP_COMPONENT_ID_MAX];
  1828		unsigned int path_len = 0;
  1829		const struct mtk_drm_route *conn_routes = NULL;
  1830		unsigned int num_conn_routes = 0;
  1831		enum mtk_drm_mmsys conn_mmsys;
  1832	
  1833		drm_for_each_crtc(tmp, drm_dev)
  1834			crtc_i++;
  1835	
  1836		for (j = 0; j < priv->data->mmsys_dev_num; j++) {
  1837			for (k = 0; k < MAX_MMSYS; k++) {
  1838				const unsigned int *subsys_path;
  1839				unsigned int subsys_path_len = 0;
  1840				unsigned int order = 0;
  1841	
  1842				subsys_priv = priv->all_drm_private[k];
  1843				if (!subsys_priv)
  1844					continue;
  1845	
  1846				if (path_sel == CRTC_MAIN) {
  1847					subsys_path = subsys_priv->data->main_path;
  1848					subsys_path_len = subsys_priv->data->main_len;
  1849					order = subsys_priv->data->main_order;
  1850				} else if (path_sel == CRTC_EXT) {
  1851					subsys_path = subsys_priv->data->ext_path;
  1852					subsys_path_len = subsys_priv->data->ext_len;
  1853					order = subsys_priv->data->ext_order;
  1854				} else if (path_sel == CRTC_THIRD) {
  1855					subsys_path = subsys_priv->data->third_path;
  1856					subsys_path_len = subsys_priv->data->third_len;
  1857					order = subsys_priv->data->third_order;
  1858				}
  1859	
  1860				if (subsys_priv->data->num_conn_routes) {
  1861					conn_routes = subsys_priv->data->conn_routes;
  1862					num_conn_routes = subsys_priv->data->num_conn_routes;
  1863					conn_mmsys = subsys_priv->data->mmsys_id;
  1864				}
  1865	
  1866				if (j != order)
  1867					continue;
  1868				if (!subsys_path_len)
  1869					continue;
  1870	
  1871				for (i = 0; i < subsys_path_len; i++) {
  1872					path[path_len].sys = subsys_priv->data->mmsys_id;
  1873					path[path_len].comp_id = subsys_path[i];
  1874					path_len++;
  1875				}
  1876			}
  1877		}
  1878	
  1879		if (!path_len)
  1880			return 0;
  1881	
  1882		if (num_conn_routes) {
  1883			for (i = 0; i < num_conn_routes; i++)
  1884				if (conn_routes->crtc_id == crtc_i)
  1885					break;
  1886			if (i == num_conn_routes) {
  1887				num_conn_routes = 0;
  1888				conn_routes = NULL;
  1889			}
  1890		}
  1891	
  1892		for (i = 0; i < path_len; i++) {
  1893			enum mtk_ddp_comp_id comp_id = path[i].comp_id;
  1894			struct device_node *node;
  1895			struct mtk_ddp_comp *comp;
  1896	
  1897			priv = priv->all_drm_private[path[i].sys];
  1898			node = priv->comp_node[comp_id];
  1899			comp = &priv->ddp_comp[comp_id];
  1900	
  1901			/* Not all drm components have a DTS device node, such as ovl_adaptor,
  1902			 * which is the drm bring up sub driver
  1903			 */
  1904			if (!node && comp_id != DDP_COMPONENT_DRM_OVL_ADAPTOR &&
  1905			    comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR0 &&
  1906			    comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR1 &&
  1907			    comp_id != DDP_COMPONENT_DRM_OVLSYS_ADAPTOR2 &&
  1908			    mtk_ddp_comp_get_type(comp_id) != MTK_DISP_VIRTUAL) {
  1909				dev_info(dev,
  1910					"Not creating crtc %d because component %d is disabled or missing\n",
  1911					crtc_i, comp_id);
  1912				return 0;
  1913			}
  1914	
  1915			if (!comp->dev && mtk_ddp_comp_get_type(comp_id) != MTK_DISP_VIRTUAL) {
  1916				dev_err(dev, "Component %pOF not initialized\n", node);
  1917				return -ENODEV;
  1918			}
  1919		}
  1920	
  1921		mtk_crtc = devm_kzalloc(dev, sizeof(*mtk_crtc), GFP_KERNEL);
  1922		if (!mtk_crtc)
  1923			return -ENOMEM;
  1924	
  1925		mtk_crtc->qos_ctx = devm_kzalloc(dev, sizeof(struct mtk_crtc_qos_ctx), GFP_KERNEL);
  1926		if (!mtk_crtc->qos_ctx)
  1927			return -ENOMEM;
  1928	
  1929		for (i = 0; i < MAX_MMSYS; i++)
  1930			if (priv->all_drm_private[i])
  1931				mtk_crtc->mmsys_dev[i] = priv->all_drm_private[i]->mmsys_dev;
  1932		mtk_crtc->ddp_comp_nr = path_len;
  1933		mtk_crtc->ddp_comp = devm_kcalloc(dev,
  1934						  mtk_crtc->ddp_comp_nr + (conn_routes ? 1 : 0),
  1935						  sizeof(*mtk_crtc->ddp_comp),
  1936						  GFP_KERNEL);
  1937		if (!mtk_crtc->ddp_comp)
  1938			return -ENOMEM;
  1939	
  1940		mtk_crtc->ddp_comp_sys = devm_kmalloc_array(dev, mtk_crtc->ddp_comp_nr +
  1941							    (conn_routes ? 1 : 0),
  1942							    sizeof(*mtk_crtc->ddp_comp_sys), GFP_KERNEL);
  1943		if (!mtk_crtc->ddp_comp_sys)
  1944			return -ENOMEM;
  1945	
  1946		for (i = 0; i < MAX_MMSYS; i++) {
  1947			if (!priv->all_drm_private[i])
  1948				continue;
  1949	
  1950			priv = priv->all_drm_private[i];
  1951			mtk_crtc->mutex[i] = mtk_mutex_get(priv->mutex_dev);
  1952			if (IS_ERR(mtk_crtc->mutex[i])) {
  1953				ret = PTR_ERR(mtk_crtc->mutex[i]);
  1954				dev_err(dev, "Failed to get mutex: %d\n", ret);
  1955				return ret;
  1956			}
  1957		}
  1958	
  1959		for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
  1960			unsigned int comp_id = path[i].comp_id;
  1961			struct mtk_ddp_comp *comp;
  1962	
  1963			priv = priv->all_drm_private[path[i].sys];
  1964			comp = &priv->ddp_comp[comp_id];
  1965			if (mtk_ddp_comp_get_type(comp_id) == MTK_DISP_VIRTUAL)
  1966				comp->id = comp_id;
  1967			mtk_crtc->ddp_comp[i] = comp;
  1968			mtk_crtc->ddp_comp_sys[i] = path[i].sys;
  1969			mtk_crtc->exist[path[i].sys] = true;
  1970	
  1971			if (comp->funcs) {
  1972				if (comp->funcs->gamma_set && comp->funcs->gamma_get_lut_size) {
  1973					unsigned int lut_sz = mtk_ddp_gamma_get_lut_size(comp);
  1974	
  1975					if (lut_sz)
  1976						gamma_lut_size = lut_sz;
  1977				}
  1978	
  1979				if (comp->funcs->ctm_set)
  1980					has_ctm = true;
  1981	
  1982	
  1983				if (comp->funcs->crc_cnt && comp->funcs->crc_cnt(comp->dev) &&
  1984				    !mtk_crtc->crc_provider) {
  1985					mtk_crtc->crc_provider = comp;
  1986					comp->funcs->crc_attach(comp->dev, mtk_crtc);
  1987				}
  1988	
  1989			}
  1990	
  1991			mtk_ddp_comp_register_vblank_cb(comp, mtk_crtc_ddp_irq,
  1992							&mtk_crtc->base);
  1993		}
  1994	
  1995		for (i = 0; i < mtk_crtc->ddp_comp_nr; i++)
  1996			num_comp_planes += mtk_crtc_num_comp_planes(mtk_crtc, i);
  1997	
  1998		mtk_crtc->planes = devm_kcalloc(dev, num_comp_planes,
  1999						sizeof(struct drm_plane), GFP_KERNEL);
  2000		if (!mtk_crtc->planes)
  2001			return -ENOMEM;
  2002	
  2003		for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) {
  2004			ret = mtk_crtc_init_comp_planes(drm_dev, mtk_crtc, i, crtc_i);
  2005			if (ret)
  2006				return ret;
  2007		}
  2008	
  2009		/*
  2010		 * Default to use the first component as the dma dev.
  2011		 * In the case of ovl_adaptor sub driver, it needs to use the
  2012		 * dma_dev_get function to get representative dma dev.
  2013		 */
  2014		priv = priv->all_drm_private[path[0].sys];
  2015		mtk_crtc->dma_dev = mtk_ddp_comp_dma_dev_get(&priv->ddp_comp[path[0].comp_id]);
  2016	
  2017		mtk_crtc->vdisp_ao_dev = priv->vdisp_ao_dev;
  2018		mtk_crtc->dpc_dev = priv->dpc_dev;
  2019		mtk_crtc->pmqos_dev = priv->pmqos_dev;
  2020		ret = mtk_crtc_init(drm_dev, mtk_crtc, crtc_i);
  2021		if (ret < 0)
  2022			return ret;
  2023	
  2024		if (gamma_lut_size)
  2025			drm_mode_crtc_set_gamma_size(&mtk_crtc->base, gamma_lut_size);
  2026		drm_crtc_enable_color_mgmt(&mtk_crtc->base, 0, has_ctm, gamma_lut_size);
  2027		mutex_init(&mtk_crtc->hw_lock);
  2028		spin_lock_init(&mtk_crtc->config_lock);
> 2029		init_completion(&mtk_crtc->fast_modeset_done);
  2030	
  2031		if (mtk_crtc->layer_nr) {
  2032			for (i = 0; i < mtk_crtc->layer_nr; i++)
  2033				mtk_ddp_comp_channel_id_get(&priv->ddp_comp[path[0].comp_id], i,
  2034							    &mtk_crtc->qos_ctx->plane_channel_id[i]);
  2035		}
  2036	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2026-08-05  4:37 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=202608051229.vIqCwwpU-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cros-kernel-buildreports@googlegroups.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.