ALSA: sound/atmel/ac97c.c: Add device tree support
Subsystems (6)
PATCH v3 1/1 ALSA: sound/atmel/ac97c.c: Add device tree support
This adds device tree support for the AC97 controller. It uses the soc-ac97link bindings, but actually only ac97-reset is used.
Acked-By Alexandre Belloni <[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'
Changes in v2:
* It now uses the soc-ac97link bindings (partly) instead of defining its own. This should ease the transition to ASoC once a new driver has been written.
sound/atmel/ac97c.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-)
sound/atmel/ac97c.c +42 -3
@@ -22,6 +22,9 @@#include <linux/gpio.h> #include <linux/types.h> #include <linux/io.h> +#include <linux/of.h> +#include <linux/of_gpio.h> +#include <linux/of_device.h> #include <sound/core.h> #include <sound/initval.h>
@@ -902,6 +905,40 @@ static void atmel_ac97c_reset(struct atmel_ac97c *chip) } } +#ifdef CONFIG_OF +static const struct of_device_id atmel_ac97c_dt_ids[] = { + { .compatible ="atmel,at91sam9263-ac97c" , }, + { } +}; +MODULE_DEVICE_TABLE (of, atmel_ac97c_dt_ids); + +static struct ac97c_platform_data *atmel_ac97c_probe_dt (struct device *dev) +{ +struct ac97c_platform_data *pdata; +struct device_node *node = dev->of_node; +const struct of_device_id *match; + +if (!node) { +dev_err (dev,"Device does not have associated DT data\n" ); +return ERR_PTR (-EINVAL ); + } + + pdata =devm_kzalloc (dev,sizeof (*pdata),GFP_KERNEL ); +if (!pdata) +return ERR_PTR (-ENOMEM ); + + pdata->reset_pin =of_get_named_gpio (dev->of_node,"ac97-gpios" ,2 ); + +return pdata; +} +#else +static struct ac97c_platform_data *atmel_ac97c_probe_dt (struct device *dev) +{ +dev_err (dev,"no platform data defined\n" ); +return ERR_PTR (-ENXIO ); +} +#endif +static int atmel_ac97c_probe (struct platform_device *pdev) {struct snd_card *card;
@@ -922,10 +959,11 @@ static int atmel_ac97c_probe(struct platform_device *pdev)return -ENXIO ; } - pdata = pdev->dev.platform_data; + pdata =dev_get_platdata (&pdev->dev);if (!pdata) { -dev_dbg (&pdev->dev,"no platform data\n" ); -return -ENXIO ; + pdata =atmel_ac97c_probe_dt (&pdev->dev); +if (IS_ERR (pdata)) +return PTR_ERR (pdata); } irq =platform_get_irq (pdev,0 );
@@ -1204,6 +1242,7 @@ static struct platform_driver atmel_ac97c_driver = { .driver = { .name = "atmel_ac97c", .pm = ATMEL_AC97C_PM_OPS, + .of_match_table = of_match_ptr(atmel_ac97c_dt_ids), }, };module_platform_driver (atmel_ac97c_driver);
Signature · 1 line
2.2.1
A message that is not in the archive (sent off-list or not yet received): 1419854922-29338-1-git-send-email-alexanders83-S0/[email protected]
PATCH v3 1/1 dt: atmel_ac97c: Add device tree documentation
This adds the bindings for AC97 controller device tree support.
Acked-By Alexandre Belloni <alexandre.belloni-wi1+55ScJUtKEb57/[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <alexandre.belloni-wi1+55ScJUtKEb57/[email protected]>'
Changes in v2:
* Split from commit adding actual code
.../devicetree/bindings/sound/atmel_ac97c.txt | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/atmel_ac97c.txt
Documentation/devicetree/bindings/sound/atmel_ac97c.txt new file +20 -0
@@ -0,0 +1,20 @@ +* Atmel AC97 controller + +Required properties: + - compatible: "atmel,at91sam9263-ac97c" + - reg: Address and length of the register set for the device + - interrupts: Should contain AC97 interrupt + - ac97-gpios: Please refer to soc-ac97link.txt, only ac97-reset is used +Optional properties: + - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt + +Example: +sound@fffa0000 { + compatible = "atmel,at91sam9263-ac97c"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ac97>; + reg = <0xfffa0000 0x4000>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; + + ac97-gpios = <&pioB 0 0 &pioB 2 0 &pioC 29 GPIO_ACTIVE_LOW>; +};
Signature · 6 lines
2.2.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v3 1/1 ARM: at91/dt: sam9263: Add ac97 device node
In reply to Alexander SteinThis adds the device node for the ac97 controller.
Acked-By Alexandre Belloni <[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'
arch/arm/boot/dts/at91sam9263.dtsi | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
arch/arm/boot/dts/at91sam9263.dtsi +21 -0
@@ -700,6 +700,16 @@ }; }; + ac97 { + pinctrl_ac97: ac97-0 { + atmel,pins = + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB12 periph A AC97FS pin */ + AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB13 periph A AC97CK pin */ + AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB14 periph A AC97TX pin */ + AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PB14 periph A AC97RX pin */ + }; + }; + pioA: gpio at fffff200 { compatible = "atmel,at91rm9200-gpio"; reg = <0xfffff200 0x200>;
@@ -828,6 +838,17 @@ status = "disabled"; }; + ac97: sound at fffa0000 { + compatible = "atmel,at91sam9263-ac97c"; + reg = <0xfffa0000 0x4000>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ac97>; + clocks = <&ac97_clk>; + clock-names = "ac97_clk"; + status = "disabled"; + }; + macb0: ethernet at fffbc000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffbc000 0x100>;
Signature · 1 line
2.2.1
PATCH v3 1/1 ARM: at91/dt: sam9263: Add ac97 device node
Now that the implementation has been applied to sound/for-next (https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/?h=for-next
), who is going to pick the related patches (this one and the other two adding documentation and default config)?
Best regards,
Alexander
On Monday 29 December 2014, 13:08:41 wrote Alexander Stein:
Quoted 52 lines
This adds the device node for the ac97 controller.
Signed-off-by Alexander Stein <[email protected]>Acked-By Alexandre Belloni <[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'arch/arm/boot/dts/at91sam9263.dtsi | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)arch/arm/boot/dts/at91sam9263.dtsi +21
-0@@ -700,6 +700,16 @@ }; }; + ac97 { + pinctrl_ac97: ac97-0 { + atmel,pins = + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB12 periph A AC97FS pin */ + AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB13 periph A AC97CK pin */ + AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB14 periph A AC97TX pin */ + AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PB14 periph A AC97RX pin */ + }; + }; + pioA: gpio at fffff200 { compatible = "atmel,at91rm9200-gpio"; reg = <0xfffff200 0x200>;@@ -828,6 +838,17 @@ status = "disabled"; }; + ac97: sound at fffa0000 { + compatible = "atmel,at91sam9263-ac97c"; + reg = <0xfffa0000 0x4000>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ac97>; + clocks = <&ac97_clk>; + clock-names = "ac97_clk"; + status = "disabled"; + }; + macb0: ethernet at fffbc000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffbc000 0x100>;
PATCH v3 1/1 ARM: at91/dt: sam9263: Add ac97 device node
Hi,
Quoted 3 lines · Alexander Stein
Now that the implementation has been applied to
sound/for-next(https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/?h=for-next
), who is going to pick the related patches (this one and the other two adding documentation and default config)?
Nicolas will do it but he has not yet started to create a branch for 3.20.
Quoted 57 lines
Best regards,
AlexanderOn Monday 29 December 2014, 13:08:41 wrote Alexander Stein:
Quoted 52 lines
This adds the device node for the ac97 controller.
Signed-off-by Alexander Stein <[email protected]>Acked-By Alexandre Belloni <[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'arch/arm/boot/dts/at91sam9263.dtsi | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)arch/arm/boot/dts/at91sam9263.dtsi +21
-0@@ -700,6 +700,16 @@ }; }; + ac97 { + pinctrl_ac97: ac97-0 { + atmel,pins = + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB12 periph A AC97FS pin */ + AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB13 periph A AC97CK pin */ + AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB14 periph A AC97TX pin */ + AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PB14 periph A AC97RX pin */ + }; + }; + pioA: gpio at fffff200 { compatible = "atmel,at91rm9200-gpio"; reg = <0xfffff200 0x200>;@@ -828,6 +838,17 @@ status = "disabled"; }; + ac97: sound at fffa0000 { + compatible = "atmel,at91sam9263-ac97c"; + reg = <0xfffa0000 0x4000>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ac97>; + clocks = <&ac97_clk>; + clock-names = "ac97_clk"; + status = "disabled"; + }; + macb0: ethernet at fffbc000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffbc000 0x100>;
Signature · 3 lines
Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 1/1 ARM: at91/dt: sam9263: Add ac97 device node
Le 08/01/2015 20:16, Alexandre Belloni a ?crit :
Quoted 10 lines
Hi,
Quoted 3 lines · Alexander Stein
Now that the implementation has been applied to
sound/for-next(https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/log/?h=for-next
), who is going to pick the related patches (this one and the other two adding documentation and default config)?Nicolas will do it but he has not yet started to create a branch for 3.20.
Yes, both first patches added to at91-3.20-dt branch.
Thanks, best regards,
Quoted 58 lines
Quoted 57 lines
Best regards,
AlexanderOn Monday 29 December 2014, 13:08:41 wrote Alexander Stein:
Quoted 52 lines
This adds the device node for the ac97 controller.
Signed-off-by Alexander Stein <[email protected]>Acked-By Alexandre Belloni <[email protected]>
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'arch/arm/boot/dts/at91sam9263.dtsi | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)arch/arm/boot/dts/at91sam9263.dtsi +21
-0@@ -700,6 +700,16 @@ }; }; + ac97 { + pinctrl_ac97: ac97-0 { + atmel,pins = + <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB12 periph A AC97FS pin */ + AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB13 periph A AC97CK pin */ + AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB14 periph A AC97TX pin */ + AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PB14 periph A AC97RX pin */ + }; + }; + pioA: gpio at fffff200 { compatible = "atmel,at91rm9200-gpio"; reg = <0xfffff200 0x200>;@@ -828,6 +838,17 @@ status = "disabled"; }; + ac97: sound at fffa0000 { + compatible = "atmel,at91sam9263-ac97c"; + reg = <0xfffa0000 0x4000>; + interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ac97>; + clocks = <&ac97_clk>; + clock-names = "ac97_clk"; + status = "disabled"; + }; + macb0: ethernet at fffbc000 { compatible = "cdns,at32ap7000-macb", "cdns,macb"; reg = <0xfffbc000 0x100>;
Signature · 1 line
Nicolas Ferre
PATCH v3 1/1 ARM: at91/defconfig: add SND_ATMEL_AC97C to at91_dt
In reply to Alexander SteinThis chip is present on at91sam9263: add it to the at91_dt_defconfig.
---
Changes in v3:
* Added to patch series
arch/arm/configs/at91_dt_defconfig | 1 + 1 file changed, 1 insertion(+)
arch/arm/configs/at91_dt_defconfig +1 -0
@@ -147,6 +147,7 @@ CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y CONFIG_LOGO=y CONFIG_SOUND=y CONFIG_SND=y +CONFIG_SND_ATMEL_AC97C=y CONFIG_SND_SOC=y CONFIG_SND_ATMEL_SOC=y CONFIG_SND_AT91_SOC_SAM9G20_WM8731=y
Signature · 1 line
2.2.1
Takashi Iwai
AppliedAt Mon, 29 Dec 2014 13:08:39 +0100,
Quoted 6 lines · Alexander Stein
This adds device tree support for the AC97 controller. It uses the soc-ac97link bindings, but actually only ac97-reset is used.
Signed-off-by Alexander Stein <[email protected]>Acked-By Alexandre Belloni <[email protected]>
Applied, thanks.
Takashi
Quoted 93 lines
---
Changes in v3:
* Renamed the compatible string to atmel,at91sam9263-ac97c
* Added 'Acked-By Alexandre Belloni <[email protected]>'Changes in v2:
* It now uses the soc-ac97link bindings (partly) instead of defining its own. This should ease the transition to ASoC once a new driver has been written.sound/atmel/ac97c.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-)sound/atmel/ac97c.c +42
-3@@ -22,6 +22,9 @@#include <linux/gpio.h> #include <linux/types.h> #include <linux/io.h> +#include <linux/of.h> +#include <linux/of_gpio.h> +#include <linux/of_device.h> #include <sound/core.h> #include <sound/initval.h> @@ -902,6 +905,40 @@ static void atmel_ac97c_reset(struct atmel_ac97c *chip) } } +#ifdef CONFIG_OF +static const struct of_device_id atmel_ac97c_dt_ids[] = { + { .compatible ="atmel,at91sam9263-ac97c" , }, + { } +}; +MODULE_DEVICE_TABLE (of, atmel_ac97c_dt_ids); + +static struct ac97c_platform_data *atmel_ac97c_probe_dt (struct device *dev) +{ +struct ac97c_platform_data *pdata; +struct device_node *node = dev->of_node; +const struct of_device_id *match; + +if (!node) { +dev_err (dev,"Device does not have associated DT data\n" ); +return ERR_PTR (-EINVAL ); + } + + pdata =devm_kzalloc (dev,sizeof (*pdata),GFP_KERNEL ); +if (!pdata) +return ERR_PTR (-ENOMEM ); + + pdata->reset_pin =of_get_named_gpio (dev->of_node,"ac97-gpios" ,2 ); + +return pdata; +} +#else +static struct ac97c_platform_data *atmel_ac97c_probe_dt (struct device *dev) +{ +dev_err (dev,"no platform data defined\n" ); +return ERR_PTR (-ENXIO ); +} +#endif +static int atmel_ac97c_probe (struct platform_device *pdev) {struct snd_card *card;@@ -922,10 +959,11 @@ static int atmel_ac97c_probe(struct platform_device *pdev)return -ENXIO ; } - pdata = pdev->dev.platform_data; + pdata =dev_get_platdata (&pdev->dev);if (!pdata) { -dev_dbg (&pdev->dev,"no platform data\n" ); -return -ENXIO ; + pdata =atmel_ac97c_probe_dt (&pdev->dev); +if (IS_ERR (pdata)) +return PTR_ERR (pdata); } irq =platform_get_irq (pdev,0 );@@ -1204,6 +1242,7 @@ static struct platform_driver atmel_ac97c_driver = { .driver = { .name = "atmel_ac97c", .pm = ATMEL_AC97C_PM_OPS, + .of_match_table = of_match_ptr(atmel_ac97c_dt_ids), }, };module_platform_driver (atmel_ac97c_driver);Signature · 1 line
2.2.1