[v3 13/19] ASoC: mediatek: mt8186: add platform driver
Jiaxin Yu
jiaxin.yu at mediatek.com
Mon Mar 14 03:11:54 PDT 2022
On Mon, 2022-03-14 at 02:59 +0800, kernel test robot wrote:
> 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",
> | ^~~~~~~
>
I'm terrible sorry about this build error. These sections of code need
be wrapped by the CONFIG_PM, or don't use these variables. I will fix
it in the next v4 version.
>
> 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_a
> fe_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