[v3 13/19] ASoC: mediatek: mt8186: add platform driver

kernel test robot lkp at intel.com
Sun Mar 13 11:59:45 PDT 2022


Hi Jiaxin,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on broonie-spi/for-next robh/for-next v5.17-rc7 next-20220310]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Jiaxin-Yu/ASoC-mediatek-Add-support-for-MT8186-SoC/20220313-231330
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20220314/202203140250.ob821GmA-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 11.2.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/0day-ci/linux/commit/088850061de683cf1cac329e1187f45fb1d25085
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Jiaxin-Yu/ASoC-mediatek-Add-support-for-MT8186-SoC/20220313-231330
        git checkout 088850061de683cf1cac329e1187f45fb1d25085
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=m68k SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   In file included from include/linux/device.h:15,
                    from include/linux/dma-mapping.h:7,
                    from sound/soc/mediatek/mt8186/mt8186-afe-pcm.c:9:
   sound/soc/mediatek/mt8186/mt8186-afe-pcm.c: In function 'mt8186_afe_pcm_dev_probe':
>> sound/soc/mediatek/mt8186/mt8186-afe-pcm.c:2914:40: error: 'struct dev_pm_info' has no member named 'runtime_error'
    2914 |                         ret, dev->power.runtime_error);
         |                                        ^
   include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   sound/soc/mediatek/mt8186/mt8186-afe-pcm.c:2913:17: note: in expansion of macro 'dev_err'
    2913 |                 dev_err(dev, "get_ret:%d, rpm_error:%d\n",
         |                 ^~~~~~~
   sound/soc/mediatek/mt8186/mt8186-afe-pcm.c:2948:40: error: 'struct dev_pm_info' has no member named 'runtime_error'
    2948 |                         ret, dev->power.runtime_error);
         |                                        ^
   include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
     110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
         |                                     ^~~~~~~~~~~
   sound/soc/mediatek/mt8186/mt8186-afe-pcm.c:2947:17: note: in expansion of macro 'dev_err'
    2947 |                 dev_err(dev, "put_ret:%d, rpm_error:%d\n",
         |                 ^~~~~~~


vim +2914 sound/soc/mediatek/mt8186/mt8186-afe-pcm.c

  2803	
  2804	static int mt8186_afe_pcm_dev_probe(struct platform_device *pdev)
  2805	{
  2806		struct mtk_base_afe *afe;
  2807		struct mt8186_afe_private *afe_priv;
  2808		struct resource *res;
  2809		struct reset_control *rstc;
  2810		struct device *dev = &pdev->dev;
  2811		int i, ret, irq_id;
  2812	
  2813		ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(34));
  2814		if (ret)
  2815			return ret;
  2816	
  2817		afe = devm_kzalloc(dev, sizeof(*afe), GFP_KERNEL);
  2818		if (!afe)
  2819			return -ENOMEM;
  2820		platform_set_drvdata(pdev, afe);
  2821	
  2822		afe->platform_priv = devm_kzalloc(dev, sizeof(*afe_priv), GFP_KERNEL);
  2823		if (!afe->platform_priv)
  2824			return -ENOMEM;
  2825	
  2826		afe_priv = afe->platform_priv;
  2827		afe->dev = &pdev->dev;
  2828	
  2829		res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  2830		afe->base_addr = devm_ioremap_resource(&pdev->dev, res);
  2831		if (IS_ERR(afe->base_addr))
  2832			return PTR_ERR(afe->base_addr);
  2833	
  2834		/* init audio related clock */
  2835		ret = mt8186_init_clock(afe);
  2836		if (ret) {
  2837			dev_err(dev, "init clock error, ret %d\n", ret);
  2838			return ret;
  2839		}
  2840	
  2841		/* init memif */
  2842		afe->memif_32bit_supported = 0;
  2843		afe->memif_size = MT8186_MEMIF_NUM;
  2844		afe->memif = devm_kcalloc(dev, afe->memif_size, sizeof(*afe->memif),
  2845					  GFP_KERNEL);
  2846	
  2847		if (!afe->memif)
  2848			return -ENOMEM;
  2849	
  2850		for (i = 0; i < afe->memif_size; i++) {
  2851			afe->memif[i].data = &memif_data[i];
  2852			afe->memif[i].irq_usage = memif_irq_usage[i];
  2853			afe->memif[i].const_irq = 1;
  2854		}
  2855	
  2856		mutex_init(&afe->irq_alloc_lock);	/* needed when dynamic irq */
  2857	
  2858		/* init irq */
  2859		afe->irqs_size = MT8186_IRQ_NUM;
  2860		afe->irqs = devm_kcalloc(dev, afe->irqs_size, sizeof(*afe->irqs),
  2861					 GFP_KERNEL);
  2862	
  2863		if (!afe->irqs)
  2864			return -ENOMEM;
  2865	
  2866		for (i = 0; i < afe->irqs_size; i++)
  2867			afe->irqs[i].irq_data = &irq_data[i];
  2868	
  2869		/* request irq */
  2870		irq_id = platform_get_irq(pdev, 0);
  2871		if (irq_id <= 0)
  2872			return dev_err_probe(dev, irq_id < 0 ? irq_id : -ENXIO,
  2873					     "no irq found");
  2874	
  2875		ret = devm_request_irq(dev, irq_id, mt8186_afe_irq_handler,
  2876				       IRQF_TRIGGER_NONE,
  2877				       "Afe_ISR_Handle", (void *)afe);
  2878		if (ret)
  2879			return dev_err_probe(dev, ret, "could not request_irq for Afe_ISR_Handle\n");
  2880	
  2881		ret = enable_irq_wake(irq_id);
  2882		if (ret < 0)
  2883			return dev_err_probe(dev, ret, "enable_irq_wake %d\n", irq_id);
  2884	
  2885		/* init sub_dais */
  2886		INIT_LIST_HEAD(&afe->sub_dais);
  2887	
  2888		for (i = 0; i < ARRAY_SIZE(dai_register_cbs); i++) {
  2889			ret = dai_register_cbs[i](afe);
  2890			if (ret)
  2891				return dev_err_probe(dev, ret, "dai register i %d fail\n", i);
  2892		}
  2893	
  2894		/* init dai_driver and component_driver */
  2895		ret = mtk_afe_combine_sub_dai(afe);
  2896		if (ret)
  2897			return dev_err_probe(dev, ret, "mtk_afe_combine_sub_dai fail\n");
  2898	
  2899		/* reset controller to reset audio regs before regmap cache */
  2900		rstc = devm_reset_control_get_exclusive(dev, "audiosys");
  2901		if (IS_ERR(rstc))
  2902			return dev_err_probe(dev, PTR_ERR(rstc), "could not get audiosys reset\n");
  2903	
  2904		ret = reset_control_reset(rstc);
  2905		if (ret)
  2906			return dev_err_probe(dev, ret, "failed to trigger audio reset\n");
  2907	
  2908		/* enable clock for regcache get default value from hw */
  2909		afe_priv->pm_runtime_bypass_reg_ctl = true;
  2910		pm_runtime_enable(dev);
  2911		ret = pm_runtime_get_sync(dev);
  2912		if (ret)
  2913			dev_err(dev, "get_ret:%d, rpm_error:%d\n",
> 2914				ret, dev->power.runtime_error);
  2915	
  2916		afe->regmap = devm_regmap_init_mmio(dev, afe->base_addr,
  2917						    &mt8186_afe_regmap_config);
  2918		if (IS_ERR(afe->regmap)) {
  2919			ret = PTR_ERR(afe->regmap);
  2920			goto err_pm_disable;
  2921		}
  2922	
  2923		/* others */
  2924		afe->mtk_afe_hardware = &mt8186_afe_hardware;
  2925		afe->memif_fs = mt8186_memif_fs;
  2926		afe->irq_fs = mt8186_irq_fs;
  2927		afe->get_dai_fs = mt8186_get_dai_fs;
  2928		afe->get_memif_pbuf_size = mt8186_get_memif_pbuf_size;
  2929	
  2930		afe->runtime_resume = mt8186_afe_runtime_resume;
  2931		afe->runtime_suspend = mt8186_afe_runtime_suspend;
  2932	
  2933		/* register platform */
  2934		dev_info(dev, "%s(), devm_snd_soc_register_component\n", __func__);
  2935	
  2936		ret = devm_snd_soc_register_component(dev,
  2937						      &mt8186_afe_component,
  2938						      afe->dai_drivers,
  2939						      afe->num_dai_drivers);
  2940		if (ret) {
  2941			dev_err(dev, "err_dai_component\n");
  2942			goto err_pm_disable;
  2943		}
  2944	
  2945		ret = pm_runtime_put_sync(dev);
  2946		if (ret)
  2947			dev_err(dev, "put_ret:%d, rpm_error:%d\n",
  2948				ret, dev->power.runtime_error);
  2949		afe_priv->pm_runtime_bypass_reg_ctl = false;
  2950	
  2951		regcache_cache_only(afe->regmap, true);
  2952		regcache_mark_dirty(afe->regmap);
  2953	
  2954		return 0;
  2955	
  2956	err_pm_disable:
  2957		pm_runtime_put_sync(dev);
  2958		pm_runtime_disable(dev);
  2959	
  2960		return ret;
  2961	}
  2962	

---
0-DAY CI Kernel Test Service
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org



More information about the Linux-mediatek mailing list