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 Reported-by: Dan Carpenter 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(a)lists.01.org _______________________________________________ kbuild mailing list -- kbuild(a)lists.01.org To unsubscribe send an email to kbuild-leave(a)lists.01.org