[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