4 Oct
2016
4 Oct
'16
2:25 p.m.
Hello,
On Tue, 4 Oct 2016 11:46:20 +0200, Mylène Josserand wrote:
+config SND_SUN8I
- tristate "Allwinner SUN6I/SUN8I audio card support"
- select SND_SUN8I_CODEC
- select SND_SUN4I_I2S
- select SND_SUN8I_CODEC_ANALOG
- select REGMAP_MMIO
I believe you need a:
depends on OF
since you're unconditionally using some DT-related functionality in the driver code.
+#include <linux/firmware.h>
Do you really need this header file? I don't see anything firmware-loading related in the driver.
+static int sun8i_probe(struct platform_device *pdev) +{
- struct snd_soc_dai_link *link = &sun8i_dai_link;
- struct device_node *np = pdev->dev.of_node;
- int ret;
- /* register the soc card */
- sun8i_card.dev = &pdev->dev;
- /* Retrieve the audio-codec from DT */
- link->codec_of_node = of_parse_phandle(np, "allwinner,audio-codec", 0);
Whenever you're using of_parse_phandle(), you must have a corresponding of_node_put() to release the reference to the Device Tree node. So I guess this should be done 1/ in the error path of ->probe(), and 2/ during the ->remove() hook.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com