* [linux-next:master 2996/14131] sound/soc/fsl/fsl_asrc.c:1050:60: sparse: got restricted snd_pcm_format_t *
@ 2020-06-09 15:09 kbuild test robot
0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-06-09 15:09 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 13618 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: e7b08814b16b80a0bf76eeca16317f8c2ed23b8c
commit: 4520af41fd21863d026d53c7e1eb987509cb3c24 [2996/14131] ASoC: fsl_asrc: Support new property fsl,asrc-format
:::::: branch date: 3 days ago
:::::: commit date: 6 weeks ago
config: openrisc-randconfig-s031-20200601 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-243-gc100a7ab-dirty
git checkout 4520af41fd21863d026d53c7e1eb987509cb3c24
# save the attached .config to linux build tree
make W=1 C=1 ARCH=openrisc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
sound/soc/fsl/fsl_asrc.c:1050:60: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] *out_value @@ got restricted snd_pcm_format_t * @@
sound/soc/fsl/fsl_asrc.c:1050:60: sparse: expected unsigned int [usertype] *out_value
>> sound/soc/fsl/fsl_asrc.c:1050:60: sparse: got restricted snd_pcm_format_t *
sound/soc/fsl/fsl_asrc.c:1073:47: sparse: sparse: restricted snd_pcm_format_t degrades to integer
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=4520af41fd21863d026d53c7e1eb987509cb3c24
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 4520af41fd21863d026d53c7e1eb987509cb3c24
vim +1050 sound/soc/fsl/fsl_asrc.c
3117bb3109dc22 Nicolin Chen 2014-07-29 933
3117bb3109dc22 Nicolin Chen 2014-07-29 934 static int fsl_asrc_probe(struct platform_device *pdev)
3117bb3109dc22 Nicolin Chen 2014-07-29 935 {
3117bb3109dc22 Nicolin Chen 2014-07-29 936 struct device_node *np = pdev->dev.of_node;
7470704d8b425c Shengjiu Wang 2020-04-16 937 struct fsl_asrc *asrc;
3117bb3109dc22 Nicolin Chen 2014-07-29 938 struct resource *res;
3117bb3109dc22 Nicolin Chen 2014-07-29 939 void __iomem *regs;
3117bb3109dc22 Nicolin Chen 2014-07-29 940 int irq, ret, i;
c05f10f28ef697 Shengjiu Wang 2019-12-04 941 u32 map_idx;
3117bb3109dc22 Nicolin Chen 2014-07-29 942 char tmp[16];
4520af41fd2186 Shengjiu Wang 2020-04-16 943 u32 width;
3117bb3109dc22 Nicolin Chen 2014-07-29 944
7470704d8b425c Shengjiu Wang 2020-04-16 945 asrc = devm_kzalloc(&pdev->dev, sizeof(*asrc), GFP_KERNEL);
7470704d8b425c Shengjiu Wang 2020-04-16 946 if (!asrc)
3117bb3109dc22 Nicolin Chen 2014-07-29 947 return -ENOMEM;
3117bb3109dc22 Nicolin Chen 2014-07-29 948
7470704d8b425c Shengjiu Wang 2020-04-16 949 asrc->pdev = pdev;
3117bb3109dc22 Nicolin Chen 2014-07-29 950
3117bb3109dc22 Nicolin Chen 2014-07-29 951 /* Get the addresses and IRQ */
3117bb3109dc22 Nicolin Chen 2014-07-29 952 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
3117bb3109dc22 Nicolin Chen 2014-07-29 953 regs = devm_ioremap_resource(&pdev->dev, res);
3117bb3109dc22 Nicolin Chen 2014-07-29 954 if (IS_ERR(regs))
3117bb3109dc22 Nicolin Chen 2014-07-29 955 return PTR_ERR(regs);
3117bb3109dc22 Nicolin Chen 2014-07-29 956
7470704d8b425c Shengjiu Wang 2020-04-16 957 asrc->paddr = res->start;
3117bb3109dc22 Nicolin Chen 2014-07-29 958
7470704d8b425c Shengjiu Wang 2020-04-16 959 asrc->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "mem", regs,
3117bb3109dc22 Nicolin Chen 2014-07-29 960 &fsl_asrc_regmap_config);
7470704d8b425c Shengjiu Wang 2020-04-16 961 if (IS_ERR(asrc->regmap)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 962 dev_err(&pdev->dev, "failed to init regmap\n");
7470704d8b425c Shengjiu Wang 2020-04-16 963 return PTR_ERR(asrc->regmap);
3117bb3109dc22 Nicolin Chen 2014-07-29 964 }
3117bb3109dc22 Nicolin Chen 2014-07-29 965
3117bb3109dc22 Nicolin Chen 2014-07-29 966 irq = platform_get_irq(pdev, 0);
cf9441adb1a355 Stephen Boyd 2019-07-30 967 if (irq < 0)
3117bb3109dc22 Nicolin Chen 2014-07-29 968 return irq;
3117bb3109dc22 Nicolin Chen 2014-07-29 969
3117bb3109dc22 Nicolin Chen 2014-07-29 970 ret = devm_request_irq(&pdev->dev, irq, fsl_asrc_isr, 0,
7470704d8b425c Shengjiu Wang 2020-04-16 971 dev_name(&pdev->dev), asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 972 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 973 dev_err(&pdev->dev, "failed to claim irq %u: %d\n", irq, ret);
3117bb3109dc22 Nicolin Chen 2014-07-29 974 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 975 }
3117bb3109dc22 Nicolin Chen 2014-07-29 976
7470704d8b425c Shengjiu Wang 2020-04-16 977 asrc->mem_clk = devm_clk_get(&pdev->dev, "mem");
7470704d8b425c Shengjiu Wang 2020-04-16 978 if (IS_ERR(asrc->mem_clk)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 979 dev_err(&pdev->dev, "failed to get mem clock\n");
7470704d8b425c Shengjiu Wang 2020-04-16 980 return PTR_ERR(asrc->mem_clk);
3117bb3109dc22 Nicolin Chen 2014-07-29 981 }
3117bb3109dc22 Nicolin Chen 2014-07-29 982
7470704d8b425c Shengjiu Wang 2020-04-16 983 asrc->ipg_clk = devm_clk_get(&pdev->dev, "ipg");
7470704d8b425c Shengjiu Wang 2020-04-16 984 if (IS_ERR(asrc->ipg_clk)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 985 dev_err(&pdev->dev, "failed to get ipg clock\n");
7470704d8b425c Shengjiu Wang 2020-04-16 986 return PTR_ERR(asrc->ipg_clk);
3117bb3109dc22 Nicolin Chen 2014-07-29 987 }
3117bb3109dc22 Nicolin Chen 2014-07-29 988
7470704d8b425c Shengjiu Wang 2020-04-16 989 asrc->spba_clk = devm_clk_get(&pdev->dev, "spba");
7470704d8b425c Shengjiu Wang 2020-04-16 990 if (IS_ERR(asrc->spba_clk))
13b8a97a760eee Shengjiu Wang 2015-11-24 991 dev_warn(&pdev->dev, "failed to get spba clock\n");
13b8a97a760eee Shengjiu Wang 2015-11-24 992
3117bb3109dc22 Nicolin Chen 2014-07-29 993 for (i = 0; i < ASRC_CLK_MAX_NUM; i++) {
3117bb3109dc22 Nicolin Chen 2014-07-29 994 sprintf(tmp, "asrck_%x", i);
7470704d8b425c Shengjiu Wang 2020-04-16 995 asrc->asrck_clk[i] = devm_clk_get(&pdev->dev, tmp);
7470704d8b425c Shengjiu Wang 2020-04-16 996 if (IS_ERR(asrc->asrck_clk[i])) {
3117bb3109dc22 Nicolin Chen 2014-07-29 997 dev_err(&pdev->dev, "failed to get %s clock\n", tmp);
7470704d8b425c Shengjiu Wang 2020-04-16 998 return PTR_ERR(asrc->asrck_clk[i]);
3117bb3109dc22 Nicolin Chen 2014-07-29 999 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1000 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1001
7470704d8b425c Shengjiu Wang 2020-04-16 1002 asrc->soc = of_device_get_match_data(&pdev->dev);
7470704d8b425c Shengjiu Wang 2020-04-16 1003 if (!asrc->soc) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1004 dev_err(&pdev->dev, "failed to get soc data\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1005 return -ENODEV;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1006 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1007
f3d8ac8c4afea2 Fabio Estevam 2016-08-19 1008 if (of_device_is_compatible(np, "fsl,imx35-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1009 asrc->clk_map[IN] = input_clk_map_imx35;
7470704d8b425c Shengjiu Wang 2020-04-16 1010 asrc->clk_map[OUT] = output_clk_map_imx35;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1011 } else if (of_device_is_compatible(np, "fsl,imx53-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1012 asrc->clk_map[IN] = input_clk_map_imx53;
7470704d8b425c Shengjiu Wang 2020-04-16 1013 asrc->clk_map[OUT] = output_clk_map_imx53;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1014 } else if (of_device_is_compatible(np, "fsl,imx8qm-asrc") ||
c05f10f28ef697 Shengjiu Wang 2019-12-04 1015 of_device_is_compatible(np, "fsl,imx8qxp-asrc")) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1016 ret = of_property_read_u32(np, "fsl,asrc-clk-map", &map_idx);
c05f10f28ef697 Shengjiu Wang 2019-12-04 1017 if (ret) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1018 dev_err(&pdev->dev, "failed to get clk map index\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1019 return ret;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1020 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1021
c05f10f28ef697 Shengjiu Wang 2019-12-04 1022 if (map_idx > 1) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1023 dev_err(&pdev->dev, "unsupported clk map index\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1024 return -EINVAL;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1025 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1026 if (of_device_is_compatible(np, "fsl,imx8qm-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1027 asrc->clk_map[IN] = clk_map_imx8qm[map_idx];
7470704d8b425c Shengjiu Wang 2020-04-16 1028 asrc->clk_map[OUT] = clk_map_imx8qm[map_idx];
3117bb3109dc22 Nicolin Chen 2014-07-29 1029 } else {
7470704d8b425c Shengjiu Wang 2020-04-16 1030 asrc->clk_map[IN] = clk_map_imx8qxp[map_idx];
7470704d8b425c Shengjiu Wang 2020-04-16 1031 asrc->clk_map[OUT] = clk_map_imx8qxp[map_idx];
c05f10f28ef697 Shengjiu Wang 2019-12-04 1032 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1033 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1034
7470704d8b425c Shengjiu Wang 2020-04-16 1035 ret = fsl_asrc_init(asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 1036 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1037 dev_err(&pdev->dev, "failed to init asrc %d\n", ret);
c0296950851455 Fabio Estevam 2016-08-19 1038 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1039 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1040
7470704d8b425c Shengjiu Wang 2020-04-16 1041 asrc->channel_avail = 10;
3117bb3109dc22 Nicolin Chen 2014-07-29 1042
3117bb3109dc22 Nicolin Chen 2014-07-29 1043 ret = of_property_read_u32(np, "fsl,asrc-rate",
7470704d8b425c Shengjiu Wang 2020-04-16 1044 &asrc->asrc_rate);
3117bb3109dc22 Nicolin Chen 2014-07-29 1045 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1046 dev_err(&pdev->dev, "failed to get output rate\n");
c0296950851455 Fabio Estevam 2016-08-19 1047 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1048 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1049
4520af41fd2186 Shengjiu Wang 2020-04-16 @1050 ret = of_property_read_u32(np, "fsl,asrc-format", &asrc->asrc_format);
4520af41fd2186 Shengjiu Wang 2020-04-16 1051 if (ret) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1052 ret = of_property_read_u32(np, "fsl,asrc-width", &width);
3117bb3109dc22 Nicolin Chen 2014-07-29 1053 if (ret) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1054 dev_err(&pdev->dev, "failed to decide output format\n");
c0296950851455 Fabio Estevam 2016-08-19 1055 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1056 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1057
4520af41fd2186 Shengjiu Wang 2020-04-16 1058 switch (width) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1059 case 16:
4520af41fd2186 Shengjiu Wang 2020-04-16 1060 asrc->asrc_format = SNDRV_PCM_FORMAT_S16_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1061 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1062 case 24:
4520af41fd2186 Shengjiu Wang 2020-04-16 1063 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1064 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1065 default:
4520af41fd2186 Shengjiu Wang 2020-04-16 1066 dev_warn(&pdev->dev,
4520af41fd2186 Shengjiu Wang 2020-04-16 1067 "unsupported width, use default S24_LE\n");
4520af41fd2186 Shengjiu Wang 2020-04-16 1068 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1069 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1070 }
4520af41fd2186 Shengjiu Wang 2020-04-16 1071 }
4520af41fd2186 Shengjiu Wang 2020-04-16 1072
4520af41fd2186 Shengjiu Wang 2020-04-16 1073 if (!(FSL_ASRC_FORMATS & (1ULL << asrc->asrc_format))) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1074 dev_warn(&pdev->dev, "unsupported width, use default S24_LE\n");
4520af41fd2186 Shengjiu Wang 2020-04-16 1075 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
3117bb3109dc22 Nicolin Chen 2014-07-29 1076 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1077
7470704d8b425c Shengjiu Wang 2020-04-16 1078 platform_set_drvdata(pdev, asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 1079 pm_runtime_enable(&pdev->dev);
7470704d8b425c Shengjiu Wang 2020-04-16 1080 spin_lock_init(&asrc->lock);
3117bb3109dc22 Nicolin Chen 2014-07-29 1081
3117bb3109dc22 Nicolin Chen 2014-07-29 1082 ret = devm_snd_soc_register_component(&pdev->dev, &fsl_asrc_component,
3117bb3109dc22 Nicolin Chen 2014-07-29 1083 &fsl_asrc_dai, 1);
3117bb3109dc22 Nicolin Chen 2014-07-29 1084 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1085 dev_err(&pdev->dev, "failed to register ASoC DAI\n");
3117bb3109dc22 Nicolin Chen 2014-07-29 1086 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1087 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1088
3117bb3109dc22 Nicolin Chen 2014-07-29 1089 return 0;
3117bb3109dc22 Nicolin Chen 2014-07-29 1090 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1091
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28092 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* [linux-next:master 2996/14131] sound/soc/fsl/fsl_asrc.c:1050:60: sparse: got restricted snd_pcm_format_t *
@ 2020-06-01 14:18 kbuild test robot
0 siblings, 0 replies; 2+ messages in thread
From: kbuild test robot @ 2020-06-01 14:18 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 13735 bytes --]
CC: kbuild-all(a)lists.01.org
TO: "Shengjiu, Wang," <shengjiu.wang@nxp.com>
CC: Mark Brown <broonie@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: e7b08814b16b80a0bf76eeca16317f8c2ed23b8c
commit: 4520af41fd21863d026d53c7e1eb987509cb3c24 [2996/14131] ASoC: fsl_asrc: Support new property fsl,asrc-format
:::::: branch date: 3 days ago
:::::: commit date: 6 weeks ago
config: openrisc-randconfig-s031-20200601 (attached as .config)
compiler: or1k-linux-gcc (GCC) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-243-gc100a7ab-dirty
git checkout 4520af41fd21863d026d53c7e1eb987509cb3c24
# save the attached .config to linux build tree
make W=1 C=1 ARCH=openrisc CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
sound/soc/fsl/fsl_asrc.c:1050:60: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] *out_value @@ got restricted snd_pcm_format_t * @@
sound/soc/fsl/fsl_asrc.c:1050:60: sparse: expected unsigned int [usertype] *out_value
>> sound/soc/fsl/fsl_asrc.c:1050:60: sparse: got restricted snd_pcm_format_t *
sound/soc/fsl/fsl_asrc.c:1073:47: sparse: sparse: restricted snd_pcm_format_t degrades to integer
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=4520af41fd21863d026d53c7e1eb987509cb3c24
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update linux-next
git checkout 4520af41fd21863d026d53c7e1eb987509cb3c24
vim +1050 sound/soc/fsl/fsl_asrc.c
3117bb3109dc22 Nicolin Chen 2014-07-29 933
3117bb3109dc22 Nicolin Chen 2014-07-29 934 static int fsl_asrc_probe(struct platform_device *pdev)
3117bb3109dc22 Nicolin Chen 2014-07-29 935 {
3117bb3109dc22 Nicolin Chen 2014-07-29 936 struct device_node *np = pdev->dev.of_node;
7470704d8b425c Shengjiu Wang 2020-04-16 937 struct fsl_asrc *asrc;
3117bb3109dc22 Nicolin Chen 2014-07-29 938 struct resource *res;
3117bb3109dc22 Nicolin Chen 2014-07-29 939 void __iomem *regs;
3117bb3109dc22 Nicolin Chen 2014-07-29 940 int irq, ret, i;
c05f10f28ef697 Shengjiu Wang 2019-12-04 941 u32 map_idx;
3117bb3109dc22 Nicolin Chen 2014-07-29 942 char tmp[16];
4520af41fd2186 Shengjiu Wang 2020-04-16 943 u32 width;
3117bb3109dc22 Nicolin Chen 2014-07-29 944
7470704d8b425c Shengjiu Wang 2020-04-16 945 asrc = devm_kzalloc(&pdev->dev, sizeof(*asrc), GFP_KERNEL);
7470704d8b425c Shengjiu Wang 2020-04-16 946 if (!asrc)
3117bb3109dc22 Nicolin Chen 2014-07-29 947 return -ENOMEM;
3117bb3109dc22 Nicolin Chen 2014-07-29 948
7470704d8b425c Shengjiu Wang 2020-04-16 949 asrc->pdev = pdev;
3117bb3109dc22 Nicolin Chen 2014-07-29 950
3117bb3109dc22 Nicolin Chen 2014-07-29 951 /* Get the addresses and IRQ */
3117bb3109dc22 Nicolin Chen 2014-07-29 952 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
3117bb3109dc22 Nicolin Chen 2014-07-29 953 regs = devm_ioremap_resource(&pdev->dev, res);
3117bb3109dc22 Nicolin Chen 2014-07-29 954 if (IS_ERR(regs))
3117bb3109dc22 Nicolin Chen 2014-07-29 955 return PTR_ERR(regs);
3117bb3109dc22 Nicolin Chen 2014-07-29 956
7470704d8b425c Shengjiu Wang 2020-04-16 957 asrc->paddr = res->start;
3117bb3109dc22 Nicolin Chen 2014-07-29 958
7470704d8b425c Shengjiu Wang 2020-04-16 959 asrc->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "mem", regs,
3117bb3109dc22 Nicolin Chen 2014-07-29 960 &fsl_asrc_regmap_config);
7470704d8b425c Shengjiu Wang 2020-04-16 961 if (IS_ERR(asrc->regmap)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 962 dev_err(&pdev->dev, "failed to init regmap\n");
7470704d8b425c Shengjiu Wang 2020-04-16 963 return PTR_ERR(asrc->regmap);
3117bb3109dc22 Nicolin Chen 2014-07-29 964 }
3117bb3109dc22 Nicolin Chen 2014-07-29 965
3117bb3109dc22 Nicolin Chen 2014-07-29 966 irq = platform_get_irq(pdev, 0);
cf9441adb1a355 Stephen Boyd 2019-07-30 967 if (irq < 0)
3117bb3109dc22 Nicolin Chen 2014-07-29 968 return irq;
3117bb3109dc22 Nicolin Chen 2014-07-29 969
3117bb3109dc22 Nicolin Chen 2014-07-29 970 ret = devm_request_irq(&pdev->dev, irq, fsl_asrc_isr, 0,
7470704d8b425c Shengjiu Wang 2020-04-16 971 dev_name(&pdev->dev), asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 972 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 973 dev_err(&pdev->dev, "failed to claim irq %u: %d\n", irq, ret);
3117bb3109dc22 Nicolin Chen 2014-07-29 974 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 975 }
3117bb3109dc22 Nicolin Chen 2014-07-29 976
7470704d8b425c Shengjiu Wang 2020-04-16 977 asrc->mem_clk = devm_clk_get(&pdev->dev, "mem");
7470704d8b425c Shengjiu Wang 2020-04-16 978 if (IS_ERR(asrc->mem_clk)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 979 dev_err(&pdev->dev, "failed to get mem clock\n");
7470704d8b425c Shengjiu Wang 2020-04-16 980 return PTR_ERR(asrc->mem_clk);
3117bb3109dc22 Nicolin Chen 2014-07-29 981 }
3117bb3109dc22 Nicolin Chen 2014-07-29 982
7470704d8b425c Shengjiu Wang 2020-04-16 983 asrc->ipg_clk = devm_clk_get(&pdev->dev, "ipg");
7470704d8b425c Shengjiu Wang 2020-04-16 984 if (IS_ERR(asrc->ipg_clk)) {
3117bb3109dc22 Nicolin Chen 2014-07-29 985 dev_err(&pdev->dev, "failed to get ipg clock\n");
7470704d8b425c Shengjiu Wang 2020-04-16 986 return PTR_ERR(asrc->ipg_clk);
3117bb3109dc22 Nicolin Chen 2014-07-29 987 }
3117bb3109dc22 Nicolin Chen 2014-07-29 988
7470704d8b425c Shengjiu Wang 2020-04-16 989 asrc->spba_clk = devm_clk_get(&pdev->dev, "spba");
7470704d8b425c Shengjiu Wang 2020-04-16 990 if (IS_ERR(asrc->spba_clk))
13b8a97a760eee Shengjiu Wang 2015-11-24 991 dev_warn(&pdev->dev, "failed to get spba clock\n");
13b8a97a760eee Shengjiu Wang 2015-11-24 992
3117bb3109dc22 Nicolin Chen 2014-07-29 993 for (i = 0; i < ASRC_CLK_MAX_NUM; i++) {
3117bb3109dc22 Nicolin Chen 2014-07-29 994 sprintf(tmp, "asrck_%x", i);
7470704d8b425c Shengjiu Wang 2020-04-16 995 asrc->asrck_clk[i] = devm_clk_get(&pdev->dev, tmp);
7470704d8b425c Shengjiu Wang 2020-04-16 996 if (IS_ERR(asrc->asrck_clk[i])) {
3117bb3109dc22 Nicolin Chen 2014-07-29 997 dev_err(&pdev->dev, "failed to get %s clock\n", tmp);
7470704d8b425c Shengjiu Wang 2020-04-16 998 return PTR_ERR(asrc->asrck_clk[i]);
3117bb3109dc22 Nicolin Chen 2014-07-29 999 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1000 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1001
7470704d8b425c Shengjiu Wang 2020-04-16 1002 asrc->soc = of_device_get_match_data(&pdev->dev);
7470704d8b425c Shengjiu Wang 2020-04-16 1003 if (!asrc->soc) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1004 dev_err(&pdev->dev, "failed to get soc data\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1005 return -ENODEV;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1006 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1007
f3d8ac8c4afea2 Fabio Estevam 2016-08-19 1008 if (of_device_is_compatible(np, "fsl,imx35-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1009 asrc->clk_map[IN] = input_clk_map_imx35;
7470704d8b425c Shengjiu Wang 2020-04-16 1010 asrc->clk_map[OUT] = output_clk_map_imx35;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1011 } else if (of_device_is_compatible(np, "fsl,imx53-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1012 asrc->clk_map[IN] = input_clk_map_imx53;
7470704d8b425c Shengjiu Wang 2020-04-16 1013 asrc->clk_map[OUT] = output_clk_map_imx53;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1014 } else if (of_device_is_compatible(np, "fsl,imx8qm-asrc") ||
c05f10f28ef697 Shengjiu Wang 2019-12-04 1015 of_device_is_compatible(np, "fsl,imx8qxp-asrc")) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1016 ret = of_property_read_u32(np, "fsl,asrc-clk-map", &map_idx);
c05f10f28ef697 Shengjiu Wang 2019-12-04 1017 if (ret) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1018 dev_err(&pdev->dev, "failed to get clk map index\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1019 return ret;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1020 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1021
c05f10f28ef697 Shengjiu Wang 2019-12-04 1022 if (map_idx > 1) {
c05f10f28ef697 Shengjiu Wang 2019-12-04 1023 dev_err(&pdev->dev, "unsupported clk map index\n");
c05f10f28ef697 Shengjiu Wang 2019-12-04 1024 return -EINVAL;
c05f10f28ef697 Shengjiu Wang 2019-12-04 1025 }
c05f10f28ef697 Shengjiu Wang 2019-12-04 1026 if (of_device_is_compatible(np, "fsl,imx8qm-asrc")) {
7470704d8b425c Shengjiu Wang 2020-04-16 1027 asrc->clk_map[IN] = clk_map_imx8qm[map_idx];
7470704d8b425c Shengjiu Wang 2020-04-16 1028 asrc->clk_map[OUT] = clk_map_imx8qm[map_idx];
3117bb3109dc22 Nicolin Chen 2014-07-29 1029 } else {
7470704d8b425c Shengjiu Wang 2020-04-16 1030 asrc->clk_map[IN] = clk_map_imx8qxp[map_idx];
7470704d8b425c Shengjiu Wang 2020-04-16 1031 asrc->clk_map[OUT] = clk_map_imx8qxp[map_idx];
c05f10f28ef697 Shengjiu Wang 2019-12-04 1032 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1033 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1034
7470704d8b425c Shengjiu Wang 2020-04-16 1035 ret = fsl_asrc_init(asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 1036 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1037 dev_err(&pdev->dev, "failed to init asrc %d\n", ret);
c0296950851455 Fabio Estevam 2016-08-19 1038 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1039 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1040
7470704d8b425c Shengjiu Wang 2020-04-16 1041 asrc->channel_avail = 10;
3117bb3109dc22 Nicolin Chen 2014-07-29 1042
3117bb3109dc22 Nicolin Chen 2014-07-29 1043 ret = of_property_read_u32(np, "fsl,asrc-rate",
7470704d8b425c Shengjiu Wang 2020-04-16 1044 &asrc->asrc_rate);
3117bb3109dc22 Nicolin Chen 2014-07-29 1045 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1046 dev_err(&pdev->dev, "failed to get output rate\n");
c0296950851455 Fabio Estevam 2016-08-19 1047 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1048 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1049
4520af41fd2186 Shengjiu Wang 2020-04-16 @1050 ret = of_property_read_u32(np, "fsl,asrc-format", &asrc->asrc_format);
4520af41fd2186 Shengjiu Wang 2020-04-16 1051 if (ret) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1052 ret = of_property_read_u32(np, "fsl,asrc-width", &width);
3117bb3109dc22 Nicolin Chen 2014-07-29 1053 if (ret) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1054 dev_err(&pdev->dev, "failed to decide output format\n");
c0296950851455 Fabio Estevam 2016-08-19 1055 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1056 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1057
4520af41fd2186 Shengjiu Wang 2020-04-16 1058 switch (width) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1059 case 16:
4520af41fd2186 Shengjiu Wang 2020-04-16 1060 asrc->asrc_format = SNDRV_PCM_FORMAT_S16_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1061 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1062 case 24:
4520af41fd2186 Shengjiu Wang 2020-04-16 1063 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1064 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1065 default:
4520af41fd2186 Shengjiu Wang 2020-04-16 1066 dev_warn(&pdev->dev,
4520af41fd2186 Shengjiu Wang 2020-04-16 1067 "unsupported width, use default S24_LE\n");
4520af41fd2186 Shengjiu Wang 2020-04-16 1068 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
4520af41fd2186 Shengjiu Wang 2020-04-16 1069 break;
4520af41fd2186 Shengjiu Wang 2020-04-16 1070 }
4520af41fd2186 Shengjiu Wang 2020-04-16 1071 }
4520af41fd2186 Shengjiu Wang 2020-04-16 1072
4520af41fd2186 Shengjiu Wang 2020-04-16 1073 if (!(FSL_ASRC_FORMATS & (1ULL << asrc->asrc_format))) {
4520af41fd2186 Shengjiu Wang 2020-04-16 1074 dev_warn(&pdev->dev, "unsupported width, use default S24_LE\n");
4520af41fd2186 Shengjiu Wang 2020-04-16 1075 asrc->asrc_format = SNDRV_PCM_FORMAT_S24_LE;
3117bb3109dc22 Nicolin Chen 2014-07-29 1076 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1077
7470704d8b425c Shengjiu Wang 2020-04-16 1078 platform_set_drvdata(pdev, asrc);
3117bb3109dc22 Nicolin Chen 2014-07-29 1079 pm_runtime_enable(&pdev->dev);
7470704d8b425c Shengjiu Wang 2020-04-16 1080 spin_lock_init(&asrc->lock);
3117bb3109dc22 Nicolin Chen 2014-07-29 1081
3117bb3109dc22 Nicolin Chen 2014-07-29 1082 ret = devm_snd_soc_register_component(&pdev->dev, &fsl_asrc_component,
3117bb3109dc22 Nicolin Chen 2014-07-29 1083 &fsl_asrc_dai, 1);
3117bb3109dc22 Nicolin Chen 2014-07-29 1084 if (ret) {
3117bb3109dc22 Nicolin Chen 2014-07-29 1085 dev_err(&pdev->dev, "failed to register ASoC DAI\n");
3117bb3109dc22 Nicolin Chen 2014-07-29 1086 return ret;
3117bb3109dc22 Nicolin Chen 2014-07-29 1087 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1088
3117bb3109dc22 Nicolin Chen 2014-07-29 1089 return 0;
3117bb3109dc22 Nicolin Chen 2014-07-29 1090 }
3117bb3109dc22 Nicolin Chen 2014-07-29 1091
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 28092 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-06-09 15:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-09 15:09 [linux-next:master 2996/14131] sound/soc/fsl/fsl_asrc.c:1050:60: sparse: got restricted snd_pcm_format_t * kbuild test robot
-- strict thread matches above, loose matches on Subject: below --
2020-06-01 14:18 kbuild test robot
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.