tree:
https://github.com/Freescale/linux-fslc pr/312
head: 98ba4471da6187346dbcc17cdf31671fb5d28b91
commit: a452c44357d9c68c27c39327e50b41e4b6cffe8d [15428/18196] MLK-25015: sound: soc:
codecs: pcm512x: set input sclk
config: x86_64-randconfig-m001-20210416 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
sound/soc/codecs/pcm512x.c:1658 pcm512x_probe() warn: missing error code 'ret'
vim +/ret +1658 sound/soc/codecs/pcm512x.c
22066226b50e40 Mark Brown 2014-03-07 1555 int pcm512x_probe(struct device
*dev, struct regmap *regmap)
5a3af1293194d0 Mark Brown 2014-02-06 1556 {
5a3af1293194d0 Mark Brown 2014-02-06 1557 struct pcm512x_priv *pcm512x;
a452c44357d9c6 Adrian Alonso 2020-11-16 1558 char clk_name[8];
5a3af1293194d0 Mark Brown 2014-02-06 1559 int i, ret;
5a3af1293194d0 Mark Brown 2014-02-06 1560
5a3af1293194d0 Mark Brown 2014-02-06 1561 pcm512x = devm_kzalloc(dev,
sizeof(struct pcm512x_priv), GFP_KERNEL);
5a3af1293194d0 Mark Brown 2014-02-06 1562 if (!pcm512x)
5a3af1293194d0 Mark Brown 2014-02-06 1563 return -ENOMEM;
5a3af1293194d0 Mark Brown 2014-02-06 1564
3500f1c589e92e Dimitris Papavasiliou 2018-11-24 1565
mutex_init(&pcm512x->mutex);
3500f1c589e92e Dimitris Papavasiliou 2018-11-24 1566
5a3af1293194d0 Mark Brown 2014-02-06 1567 dev_set_drvdata(dev, pcm512x);
5a3af1293194d0 Mark Brown 2014-02-06 1568 pcm512x->regmap = regmap;
5a3af1293194d0 Mark Brown 2014-02-06 1569
5a3af1293194d0 Mark Brown 2014-02-06 1570 for (i = 0; i <
ARRAY_SIZE(pcm512x->supplies); i++)
5a3af1293194d0 Mark Brown 2014-02-06 1571 pcm512x->supplies[i].supply =
pcm512x_supply_names[i];
5a3af1293194d0 Mark Brown 2014-02-06 1572
5a3af1293194d0 Mark Brown 2014-02-06 1573 ret = devm_regulator_bulk_get(dev,
ARRAY_SIZE(pcm512x->supplies),
5a3af1293194d0 Mark Brown 2014-02-06 1574 pcm512x->supplies);
5a3af1293194d0 Mark Brown 2014-02-06 1575 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1576 dev_err(dev, "Failed to get
supplies: %d\n", ret);
5a3af1293194d0 Mark Brown 2014-02-06 1577 return ret;
5a3af1293194d0 Mark Brown 2014-02-06 1578 }
5a3af1293194d0 Mark Brown 2014-02-06 1579
5a3af1293194d0 Mark Brown 2014-02-06 1580
pcm512x->supply_nb[0].notifier_call = pcm512x_regulator_event_0;
5a3af1293194d0 Mark Brown 2014-02-06 1581
pcm512x->supply_nb[1].notifier_call = pcm512x_regulator_event_1;
5a3af1293194d0 Mark Brown 2014-02-06 1582
pcm512x->supply_nb[2].notifier_call = pcm512x_regulator_event_2;
5a3af1293194d0 Mark Brown 2014-02-06 1583
5a3af1293194d0 Mark Brown 2014-02-06 1584 for (i = 0; i <
ARRAY_SIZE(pcm512x->supplies); i++) {
0bb423f2eaafed Guennadi Liakhovetski 2019-02-08 1585 ret =
devm_regulator_register_notifier(
0bb423f2eaafed Guennadi Liakhovetski 2019-02-08 1586
pcm512x->supplies[i].consumer,
5a3af1293194d0 Mark Brown 2014-02-06 1587
&pcm512x->supply_nb[i]);
5a3af1293194d0 Mark Brown 2014-02-06 1588 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1589 dev_err(dev,
5a3af1293194d0 Mark Brown 2014-02-06 1590 "Failed to register
regulator notifier: %d\n",
5a3af1293194d0 Mark Brown 2014-02-06 1591 ret);
5a3af1293194d0 Mark Brown 2014-02-06 1592 }
5a3af1293194d0 Mark Brown 2014-02-06 1593 }
5a3af1293194d0 Mark Brown 2014-02-06 1594
5a3af1293194d0 Mark Brown 2014-02-06 1595 ret =
regulator_bulk_enable(ARRAY_SIZE(pcm512x->supplies),
5a3af1293194d0 Mark Brown 2014-02-06 1596 pcm512x->supplies);
5a3af1293194d0 Mark Brown 2014-02-06 1597 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1598 dev_err(dev, "Failed to
enable supplies: %d\n", ret);
5a3af1293194d0 Mark Brown 2014-02-06 1599 return ret;
5a3af1293194d0 Mark Brown 2014-02-06 1600 }
5a3af1293194d0 Mark Brown 2014-02-06 1601
5a3af1293194d0 Mark Brown 2014-02-06 1602 /* Reset the device, verifying I/O
in the process for I2C */
5a3af1293194d0 Mark Brown 2014-02-06 1603 ret = regmap_write(regmap,
PCM512x_RESET,
5a3af1293194d0 Mark Brown 2014-02-06 1604 PCM512x_RSTM |
PCM512x_RSTR);
5a3af1293194d0 Mark Brown 2014-02-06 1605 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1606 dev_err(dev, "Failed to
reset device: %d\n", ret);
5a3af1293194d0 Mark Brown 2014-02-06 1607 goto err;
5a3af1293194d0 Mark Brown 2014-02-06 1608 }
5a3af1293194d0 Mark Brown 2014-02-06 1609
5a3af1293194d0 Mark Brown 2014-02-06 1610 ret = regmap_write(regmap,
PCM512x_RESET, 0);
5a3af1293194d0 Mark Brown 2014-02-06 1611 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1612 dev_err(dev, "Failed to
reset device: %d\n", ret);
5a3af1293194d0 Mark Brown 2014-02-06 1613 goto err;
5a3af1293194d0 Mark Brown 2014-02-06 1614 }
5a3af1293194d0 Mark Brown 2014-02-06 1615
a452c44357d9c6 Adrian Alonso 2020-11-16 1616 /* default to first sclk */
a452c44357d9c6 Adrian Alonso 2020-11-16 1617 pcm512x->num_clocks = 1;
a452c44357d9c6 Adrian Alonso 2020-11-16 1618 pcm512x->sclk_src =
PCM512x_SYSCLK_MCLK1;
a452c44357d9c6 Adrian Alonso 2020-11-16 1619
a452c44357d9c6 Adrian Alonso 2020-11-16 1620 pcm512x->sclk[0] =
devm_clk_get(dev, NULL);
a452c44357d9c6 Adrian Alonso 2020-11-16 1621 if (PTR_ERR(pcm512x->sclk[0])
== -EPROBE_DEFER) {
94c472e7b4e15e Matthias Reichl 2020-02-20 1622 ret = -EPROBE_DEFER;
94c472e7b4e15e Matthias Reichl 2020-02-20 1623 goto err;
94c472e7b4e15e Matthias Reichl 2020-02-20 1624 }
a452c44357d9c6 Adrian Alonso 2020-11-16 1625
a452c44357d9c6 Adrian Alonso 2020-11-16 1626 if (!IS_ERR(pcm512x->sclk[0]))
{
a452c44357d9c6 Adrian Alonso 2020-11-16 1627 ret =
clk_prepare_enable(pcm512x->sclk[0]);
5a3af1293194d0 Mark Brown 2014-02-06 1628 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1629 dev_err(dev, "Failed to
enable SCLK: %d\n", ret);
94c472e7b4e15e Matthias Reichl 2020-02-20 1630 goto err;
5a3af1293194d0 Mark Brown 2014-02-06 1631 }
5a3af1293194d0 Mark Brown 2014-02-06 1632 }
5a3af1293194d0 Mark Brown 2014-02-06 1633
5a3af1293194d0 Mark Brown 2014-02-06 1634 /* Default to standby mode */
5a3af1293194d0 Mark Brown 2014-02-06 1635 ret =
regmap_update_bits(pcm512x->regmap, PCM512x_POWER,
5a3af1293194d0 Mark Brown 2014-02-06 1636 PCM512x_RQST, PCM512x_RQST);
5a3af1293194d0 Mark Brown 2014-02-06 1637 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1638 dev_err(dev, "Failed to
request standby: %d\n",
5a3af1293194d0 Mark Brown 2014-02-06 1639 ret);
5a3af1293194d0 Mark Brown 2014-02-06 1640 goto err_clk;
5a3af1293194d0 Mark Brown 2014-02-06 1641 }
5a3af1293194d0 Mark Brown 2014-02-06 1642
5a3af1293194d0 Mark Brown 2014-02-06 1643 pm_runtime_set_active(dev);
5a3af1293194d0 Mark Brown 2014-02-06 1644 pm_runtime_enable(dev);
5a3af1293194d0 Mark Brown 2014-02-06 1645 pm_runtime_idle(dev);
5a3af1293194d0 Mark Brown 2014-02-06 1646
f086ba9d5389cc Peter Rosin 2015-01-28 1647 #ifdef CONFIG_OF
f086ba9d5389cc Peter Rosin 2015-01-28 1648 if (dev->of_node) {
f086ba9d5389cc Peter Rosin 2015-01-28 1649 const struct device_node *np =
dev->of_node;
2599a9609c588d Peter Rosin 2015-01-29 1650 u32 val;
f086ba9d5389cc Peter Rosin 2015-01-28 1651
a452c44357d9c6 Adrian Alonso 2020-11-16 1652 if (of_property_read_bool(np,
"clocks")) {
a452c44357d9c6 Adrian Alonso 2020-11-16 1653 pcm512x->num_clocks =
a452c44357d9c6 Adrian Alonso 2020-11-16 1654 of_property_count_u32_elems(np,
"clocks");
a452c44357d9c6 Adrian Alonso 2020-11-16 1655 if (pcm512x->num_clocks >
PCM512x_MAX_NUM_SCLK) {
a452c44357d9c6 Adrian Alonso 2020-11-16 1656 dev_err(dev, "Failed
unsupported max sclk: %d\n",
a452c44357d9c6 Adrian Alonso 2020-11-16 1657 pcm512x->num_clocks);
a452c44357d9c6 Adrian Alonso 2020-11-16 @1658 goto err;
"ret = -EINVAL;"
a452c44357d9c6 Adrian Alonso 2020-11-16 1659 }
a452c44357d9c6 Adrian Alonso 2020-11-16 1660
a452c44357d9c6 Adrian Alonso 2020-11-16 1661 for (i = 0; i <
pcm512x->num_clocks; i++) {
a452c44357d9c6 Adrian Alonso 2020-11-16 1662 sprintf(clk_name,
"sclk%d", i);
a452c44357d9c6 Adrian Alonso 2020-11-16 1663 pcm512x->sclk[i] =
devm_clk_get(dev, clk_name);
a452c44357d9c6 Adrian Alonso 2020-11-16 1664
a452c44357d9c6 Adrian Alonso 2020-11-16 1665 if
(IS_ERR(pcm512x->sclk[i])) {
a452c44357d9c6 Adrian Alonso 2020-11-16 1666 dev_info(dev, "Failed to
get sclk%d\n", i);
a452c44357d9c6 Adrian Alonso 2020-11-16 1667 pcm512x->sclk[i] = NULL;
a452c44357d9c6 Adrian Alonso 2020-11-16 1668 }
a452c44357d9c6 Adrian Alonso 2020-11-16 1669 }
a452c44357d9c6 Adrian Alonso 2020-11-16 1670 }
a452c44357d9c6 Adrian Alonso 2020-11-16 1671
f086ba9d5389cc Peter Rosin 2015-01-28 1672 if (of_property_read_u32(np,
"pll-in", &val) >= 0) {
f086ba9d5389cc Peter Rosin 2015-01-28 1673 if (val > 6) {
f086ba9d5389cc Peter Rosin 2015-01-28 1674 dev_err(dev, "Invalid
pll-in\n");
f086ba9d5389cc Peter Rosin 2015-01-28 1675 ret = -EINVAL;
f086ba9d5389cc Peter Rosin 2015-01-28 1676 goto err_clk;
f086ba9d5389cc Peter Rosin 2015-01-28 1677 }
f086ba9d5389cc Peter Rosin 2015-01-28 1678 pcm512x->pll_in = val;
f086ba9d5389cc Peter Rosin 2015-01-28 1679 }
f086ba9d5389cc Peter Rosin 2015-01-28 1680
f086ba9d5389cc Peter Rosin 2015-01-28 1681 if (of_property_read_u32(np,
"pll-out", &val) >= 0) {
f086ba9d5389cc Peter Rosin 2015-01-28 1682 if (val > 6) {
f086ba9d5389cc Peter Rosin 2015-01-28 1683 dev_err(dev, "Invalid
pll-out\n");
f086ba9d5389cc Peter Rosin 2015-01-28 1684 ret = -EINVAL;
f086ba9d5389cc Peter Rosin 2015-01-28 1685 goto err_clk;
f086ba9d5389cc Peter Rosin 2015-01-28 1686 }
f086ba9d5389cc Peter Rosin 2015-01-28 1687 pcm512x->pll_out = val;
f086ba9d5389cc Peter Rosin 2015-01-28 1688 }
f086ba9d5389cc Peter Rosin 2015-01-28 1689
f086ba9d5389cc Peter Rosin 2015-01-28 1690 if (!pcm512x->pll_in !=
!pcm512x->pll_out) {
f086ba9d5389cc Peter Rosin 2015-01-28 1691 dev_err(dev,
f086ba9d5389cc Peter Rosin 2015-01-28 1692 "Error: both pll-in and
pll-out, or none\n");
f086ba9d5389cc Peter Rosin 2015-01-28 1693 ret = -EINVAL;
f086ba9d5389cc Peter Rosin 2015-01-28 1694 goto err_clk;
f086ba9d5389cc Peter Rosin 2015-01-28 1695 }
f086ba9d5389cc Peter Rosin 2015-01-28 1696 if (pcm512x->pll_in &&
pcm512x->pll_in == pcm512x->pll_out) {
f086ba9d5389cc Peter Rosin 2015-01-28 1697 dev_err(dev, "Error: pll-in
== pll-out\n");
f086ba9d5389cc Peter Rosin 2015-01-28 1698 ret = -EINVAL;
f086ba9d5389cc Peter Rosin 2015-01-28 1699 goto err_clk;
f086ba9d5389cc Peter Rosin 2015-01-28 1700 }
f086ba9d5389cc Peter Rosin 2015-01-28 1701 }
f086ba9d5389cc Peter Rosin 2015-01-28 1702 #endif
f086ba9d5389cc Peter Rosin 2015-01-28 1703
5bdef14a35bb99 Kuninori Morimoto 2018-01-29 1704 ret =
devm_snd_soc_register_component(dev, &pcm512x_component_driver,
5a3af1293194d0 Mark Brown 2014-02-06 1705 &pcm512x_dai, 1);
5a3af1293194d0 Mark Brown 2014-02-06 1706 if (ret != 0) {
5a3af1293194d0 Mark Brown 2014-02-06 1707 dev_err(dev, "Failed to
register CODEC: %d\n", ret);
5a3af1293194d0 Mark Brown 2014-02-06 1708 goto err_pm;
5a3af1293194d0 Mark Brown 2014-02-06 1709 }
5a3af1293194d0 Mark Brown 2014-02-06 1710
5a3af1293194d0 Mark Brown 2014-02-06 1711 return 0;
5a3af1293194d0 Mark Brown 2014-02-06 1712
5a3af1293194d0 Mark Brown 2014-02-06 1713 err_pm:
5a3af1293194d0 Mark Brown 2014-02-06 1714 pm_runtime_disable(dev);
5a3af1293194d0 Mark Brown 2014-02-06 1715 err_clk:
a452c44357d9c6 Adrian Alonso 2020-11-16 1716 for (i = 0; i <
pcm512x->num_clocks; i++) {
a452c44357d9c6 Adrian Alonso 2020-11-16 1717 if
(!IS_ERR(pcm512x->sclk[i]))
a452c44357d9c6 Adrian Alonso 2020-11-16 1718
clk_disable_unprepare(pcm512x->sclk[i]);
a452c44357d9c6 Adrian Alonso 2020-11-16 1719 }
5a3af1293194d0 Mark Brown 2014-02-06 1720 err:
5a3af1293194d0 Mark Brown 2014-02-06 1721
regulator_bulk_disable(ARRAY_SIZE(pcm512x->supplies),
5a3af1293194d0 Mark Brown 2014-02-06 1722 pcm512x->supplies);
5a3af1293194d0 Mark Brown 2014-02-06 1723 return ret;
5a3af1293194d0 Mark Brown 2014-02-06 1724 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org