sound/tlv320dac33: Add device tree support
PATCH 1/1 sound/tlv320dac33: Add device tree support
This adds device tree support to tlv320dac33.c.
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +32 -0
@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active high + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes +- ti,burst-bclkdiv - BCLK divider value in burst mode + +Example: + +tlv320dac33: audio-codec@19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + power-gpio = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};
sound/soc/codecs/tlv320dac33.c +31 -12
79 lines not on this page · raw message
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 13 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +2
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module +
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 10 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +10
-0+The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active high
While driver used gpio in platform data, isn't it more likely regulator which powers device?
Quoted 111 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +19
-0+- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes +- ti,burst-bclkdiv - BCLK divider value in burst mode + +Example: + +tlv320dac33: audio-codec at 19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + power-gpio = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};sound/soc/codecs/tlv320dac33.c +31
-12@@ -30,6 +32,7 @@#include <linux/interrupt.h> #include <linux/gpio.h> #include <linux/regulator/consumer.h> +#include <linux/of_gpio.h> #include <linux/slab.h> #include <sound/core.h> #include <sound/pcm.h> @@ -105,7 +108,7 @@ struct tlv320dac33_priv {unsigned int nsample;/* burst read amount from host */ int mode1_latency;/* latency caused by the i2c writes in * us */ -u8 burst_bclkdiv;/* BCLK divider value in burst mode */ +u32 burst_bclkdiv;/* BCLK divider value in burst mode */ unsigned int burst_rate;/* Interface speed in Burst modes */ int keep_bclk;/* Keep the BCLK continuously running @@ -1484,16 +1487,11 @@ static struct snd_soc_dai_driver dac33_dai = {static int dac33_i2c_probe (struct i2c_client *client,const struct i2c_device_id *id) { -struct tlv320dac33_platform_data *pdata; +struct tlv320dac33_platform_data *pdata = client->dev.platform_data;struct tlv320dac33_priv *dac33; +struct device_node *np = client->dev.of_node;int ret, i; -if (client->dev.platform_data ==NULL ) { -dev_err (&client->dev,"Platform data not set\n" ); -return -ENODEV ; - } - pdata = client->dev.platform_data; - dac33 =devm_kzalloc (&client->dev,sizeof (struct tlv320dac33_priv ),GFP_KERNEL );if (dac33 ==NULL )@@ -1505,10 +1503,26 @@ static int dac33_i2c_probe(struct i2c_client *client,i2c_set_clientdata (client, dac33); - dac33->power_gpio = pdata->power_gpio; - dac33->burst_bclkdiv = pdata->burst_bclkdiv; - dac33->keep_bclk = pdata->keep_bclk; - dac33->mode1_latency = pdata->mode1_latency; +if (pdata) { + dac33->power_gpio = pdata->power_gpio; + dac33->burst_bclkdiv = pdata->burst_bclkdiv; + dac33->keep_bclk = pdata->keep_bclk; + dac33->mode1_latency = pdata->mode1_latency; + }else if (np) { + ret =of_get_named_gpio (np,"power-gpios" ,0 ); +if (ret >=0 ) + dac33->power_gpio = ret; +else + dac33->power_gpio =-1 ; + +if (of_property_read_bool (np,"ti,keep-bclk" )) + dac33->keep_bclk = true; + +of_property_read_u32 (np,"ti,burst-bclkdiv" , &dac33->burst_bclkdiv); + }else { +dev_err (&client->dev,"Platform data not set\n" ); +return -ENODEV ; + }if (!dac33->mode1_latency) dac33->mode1_latency =10000 ;/* 10ms */ dac33->irq = client->irq;@@ -1574,9 +1588,16 @@ static const struct i2c_device_id tlv320dac33_i2c_id[] = { };MODULE_DEVICE_TABLE (i2c, tlv320dac33_i2c_id); +static const struct of_device_id tlv320dac33_of_match[] = { + { .compatible ="ti,tlv320dac33" , }, + {}, +}; +MODULE_DEVICE_TABLE (i2c, tlv320dac33_of_match); +static struct i2c_driver tlv320dac33_i2c_driver = { .driver = { .name ="tlv320dac33-codec" , + .of_match_table =of_match_ptr (tlv320dac33_of_match), }, .probe = dac33_i2c_probe, .remove = dac33_i2c_remove,Signature · 3 lines
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"
Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
power-gpios = <&gpio2 28 0>; /* gpio_60 */
Looks like GPIO to me -- example is from Nokia N9. So this appears to be correct.
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 29 lines · Pavel Machek
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
Quoted 4 lines
power-gpios = <&gpio2 28 0>; /* gpio_60 */Looks like GPIO to me -- example is from Nokia N9. So this appears to be correct.
Device datasheet doesn't list any pin which looks like "power-gpio"
http://www.ti.com/lit/ds/symlink/tlv320dac32.pdf
Unfortunately I do not know much about N9, but was able to find Nokia 5610 scheme to get clue how could be tlv320dac33 hardwired (see page 2):
http://mastermobile.spb.ru/service/nokia_5610_rm-242_service_schematics.pdf
Here AVDD is powered by LP3985 voltage regulator which is enabled using VEN pin which might be connected to gpio. Or there could be completely different voltage regulator with different controls. And since Linux already has voltage regulator class, lets not limit ourselves to gpio pins.
See also here about deprecated power-gpios:Documentation/devicetree/bindings/mmc/cavium-mmc.txt so it seems others already fallen into that trap.
ladis
Quoted 35 lines · Ladislav Michl
Quoted 29 lines · Pavel Machek
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
Quoted 4 lines
power-gpios = <&gpio2 28 0>; /* gpio_60 */Looks like GPIO to me -- example is from Nokia N9. So this appears to be correct.
Quoted 10 lines
Device datasheet doesn't list any pin which looks like "power-gpio"
http://www.ti.com/lit/ds/symlink/tlv320dac32.pdf
Unfortunately I do not know much about N9, but was able to find Nokia 5610 scheme to get clue how could be tlv320dac33 hardwired (see page 2):
http://mastermobile.spb.ru/service/nokia_5610_rm-242_service_schematics.pdf
Here AVDD is powered by LP3985 voltage regulator which is enabled using VEN pin which might be connected to gpio. Or there could be completely different voltage regulator with different controls. And since Linux already has voltage regulator class, lets not limit ourselves to gpio pins.
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Pavel
Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 181 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180130/b3e457c9/attachment-0001.sig>
Hi,
Quoted 47 lines · Pavel Machek
Quoted 35 lines · Ladislav Michl
Quoted 29 lines · Pavel Machek
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
Quoted 4 lines
power-gpios = <&gpio2 28 0>; /* gpio_60 */Looks like GPIO to me -- example is from Nokia N9. So this appears to be correct.
Quoted 10 lines
Device datasheet doesn't list any pin which looks like "power-gpio"
http://www.ti.com/lit/ds/symlink/tlv320dac32.pdf
Unfortunately I do not know much about N9, but was able to find Nokia 5610 scheme to get clue how could be tlv320dac33 hardwired (see page 2):
http://mastermobile.spb.ru/service/nokia_5610_rm-242_service_schematics.pdf
Here AVDD is powered by LP3985 voltage regulator which is enabled using VEN pin which might be connected to gpio. Or there could be completely different voltage regulator with different controls. And since Linux already has voltage regulator class, lets not limit ourselves to gpio pins.
Quoted 7 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Pavel
According to N9 schematics
http://www.s-manuals.com/manuals/phone/nokia/nokia_n9_rm-696_service_schematics_v1.pdf
it's in fact GPIO pin that is connected to reset line (labeled CODEC_RST). So calling it "power" might be misleading, but the driver code is quite clear as it labels that GPIO as "tlv320dac33 reset"
Filip
Quoted 54 lines · Filip Matijević
Hi,
Quoted 51 lines · Pavel Machek
Quoted 35 lines · Ladislav Michl
Quoted 29 lines · Pavel Machek
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
Quoted 4 lines
power-gpios = <&gpio2 28 0>; /* gpio_60 */Looks like GPIO to me -- example is from Nokia N9. So this appears to be correct.
Quoted 10 lines
Device datasheet doesn't list any pin which looks like "power-gpio"
http://www.ti.com/lit/ds/symlink/tlv320dac32.pdf
Unfortunately I do not know much about N9, but was able to find Nokia 5610 scheme to get clue how could be tlv320dac33 hardwired (see page 2):
http://mastermobile.spb.ru/service/nokia_5610_rm-242_service_schematics.pdf
Here AVDD is powered by LP3985 voltage regulator which is enabled using VEN pin which might be connected to gpio. Or there could be completely different voltage regulator with different controls. And since Linux already has voltage regulator class, lets not limit ourselves to gpio pins.Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
Quoted 5 lines
According to N9 schematics
http://www.s-manuals.com/manuals/phone/nokia/nokia_n9_rm-696_service_schematics_v1.pdf
it's in fact GPIO pin that is connected to reset line (labeledCODEC_RST). So calling it "power" might be misleading, but the driver code is quite clear as it labels that GPIO as "tlv320dac33 reset"
Thanks a lot! So now it is clear that gpio is connected to codec's nRESET pin, therefore "reset-gpios" property seems reasonable here.
ladis
--
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
Quoted 4 lines · Ladislav Michl
Quoted 2 lines · Filip Matijević
Hi,
Quoted 8 lines
Quoted 4 lines
Quoted 4 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
I believe reset-gpios and power-gpios are commonly used like this... and that's what the old code does.
You are not helping.
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 10 lines · Pavel Machek
Quoted 9 lines · Ladislav Michl
Quoted 7 lines · Filip Matijević
Hi,
Quoted 4 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Quoted 6 lines
Quoted 3 lines
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
I believe reset-gpios and power-gpios are commonly used like this... and that's what the old code does.
Why do you care about old code when introducing new DT property? Either it is reset, then lets call it reset-gpios or it is power supply and then voltage regulator should be used (VAUX4.OUT is such a regulator although it is unclear to me how it is controlled (*)).
Quoted 1 line
You are not helping.
The only way I can help here is to resend your patch with "reset-gpios" used, which I'm pretty sure you can handle yourself.
(*) Remark "DAC33 enabled (for example, plug in a headset to the 3.5mm AV connector and start music playback from the device)" in schematics suggests it is controlled somehow.
Quoted 15 lines · Ladislav Michl
Quoted 14 lines · Pavel Machek
Quoted 12 lines · Ladislav Michl
Quoted 7 lines · Filip Matijević
Hi,
Quoted 4 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
Quoted 7 lines
Quoted 2 lines
I believe reset-gpios and power-gpios are commonly used like this... and that's what the old code does.
Why do you care about old code when introducing new DT property? Either it is reset, then lets call it reset-gpios or it is power supply and then voltage regulator should be used (VAUX4.OUT is such a regulator although it is unclear to me how it is controlled (*)).
power gpio = !reset gpio. Difference is only in polarity.
Quoted 4 lines
Quoted 1 line
You are not helping.
The only way I can help here is to resend your patch with "reset-gpios" used, which I'm pretty sure you can handle yourself.
Well, you can do that, and then you can argue with the next person who feels one of the properties has to get his preferred color. Hard part is not changing code :-(.
Pavel
Quoted 3 lines
(*) Remark "DAC33 enabled (for example, plug in a headset to the 3.5mm AV connector and start music playback from the device)" in schematics suggests it is controlled somehow.
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Mark Brown
maintainerQuoted 4 lines · Pavel Machek
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
No, it's a very good reason to delay merging something. A DT binding is
an ABI so we need to sort out interface issues and describe things as
well as we can, with board files it's not an ABI so we can just do any
old thing that happens to work and while it might not be ideal it
doesn't really matter since we can change it later if we need to.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180130/44c7a5d7/attachment.sig>
Quoted 19 lines · Pavel Machek
Quoted 18 lines · Ladislav Michl
Quoted 16 lines · Pavel Machek
Quoted 4 lines · Ladislav Michl
Quoted 2 lines · Filip Matijevi?
Hi,
Quoted 8 lines
Quoted 4 lines
Quoted 4 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
I believe reset-gpios and power-gpios are commonly used like this... and that's what the old code does.
Quoted 6 lines
Quoted 4 lines
Why do you care about old code when introducing new DT property? Either it is reset, then lets call it reset-gpios or it is power supply and then voltage regulator should be used (VAUX4.OUT is such a regulator although it is unclear to me how it is controlled (*)).
power gpio = !reset gpio. Difference is only in polarity.
Quick grep:Documentation/devicetree/bindings/net/smsc-lan91c111.txt
- power-gpios: GPIO to control the PWRDWN pin
- reset-gpios: GPIO to control the RESET pin Documentation/devicetree/bindings/net/wireless/ti,wl1251.txt
- ti,power-gpio : GPIO connected to chip's PMEN pinDocumentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
- power-gpios : Specification for the pin connected to the gsl1680's
shutdown input. This needs to be driven high to take the gsl1680 out of its low power stateDocumentation/devicetree/bindings/input/touchscreen/ektf2127.txt
- power-gpios : GPIO specification for the pin connected to the
ektf2127's wake input. This needs to be driven high to take ektf2127 out of it's low power state
As you can see others are using it to drive pins different from nRESET. As stated in datasheet:
"The TLV320DAC32 requires a hardware reset after power-up for proper operation. After all power supplies are at their specified values, the nRESET pin must be driven low for at least 10ns. If this reset sequence is not performed, the DAC32 may not respond properly to register reads/writes". That does not sound like anything to do with power.
(It seems the only difference between TLV320DAC33 and TLV320DAC32 is uses a ball grid array package vs QFN32)
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
You are not helping.
The only way I can help here is to resend your patch with "reset-gpios" used, which I'm pretty sure you can handle yourself.
Well, you can do that, and then you can argue with the next person who feels one of the properties has to get his preferred color. Hard part is not changing code :-(.
Indeed, hard part is not to break DT compatibility later. Consider someone will have to add regulator support later, which you omitted to do - having both power supply and power gpio is a bit confusing, don't you think?
Anyway, time to stop arguing, feel free to do what you think is right, I do not have anything important to add :)
ladis
Quoted 7 lines · Mark Brown
Quoted 4 lines · Pavel Machek
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Quoted 5 lines
No, it's a very good reason to delay merging something. A DT binding is an ABI so we need to sort out interface issues and describe things as well as we can, with board files it's not an ABI so we can just do any old thing that happens to work and while it might not be ideal it doesn't really matter since we can change it later if we need to.
Whatever.
Turns out this was GPIO after all.
I believe power-gpio and reset-gpio are equiavalent, with different polarity. (After all, devices in reset consume less power).
If you prefer one solution over another, let me know...
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Quoted 19 lines · Ladislav Michl
Quoted 18 lines · Pavel Machek
This adds device tree support to
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"
Quoted 8 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 12
Quoted 5 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +5
-0+- reg - I2C slave address + +Optional properties: + +- power-gpios - gpio pin to power the device, active highWhile driver used gpio in platform data, isn't it more likely regulator which powers device?
It is GPIO, and according to the non public TRM it is connected to the reset pin of the codec.
So the correct name should be reset-gpios
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Quoted 50 lines · Ladislav Michl
Quoted 19 lines · Pavel Machek
Quoted 18 lines · Ladislav Michl
Quoted 16 lines · Pavel Machek
Quoted 4 lines · Ladislav Michl
Quoted 2 lines · Filip Matijević
Hi,
Quoted 8 lines
Quoted 4 lines
Quoted 4 lines
Well, notice I'm converting existing driver to device tree. And that one already has GPIO dependency. It is possible that more work needs to be done there, but that should not be a reason to delay this. Feel free to help.
Adding DT properties that need to be maintained for compatibility reasons is a bad idea and very good reason to delay merging unfinished stuff. And meanwhile it turned out it is not power-gpio :)
I believe reset-gpios and power-gpios are commonly used like this... and that's what the old code does.
Quoted 6 lines
Quoted 4 lines
Why do you care about old code when introducing new DT property? Either it is reset, then lets call it reset-gpios or it is power supply and then voltage regulator should be used (VAUX4.OUT is such a regulator although it is unclear to me how it is controlled (*)).
power gpio = !reset gpio. Difference is only in polarity.
Quick grep:
Documentation/devicetree/bindings/net/smsc-lan91c111.txt
- power-gpios: GPIO to control the PWRDWN pin
- reset-gpios: GPIO to control the RESET pinDocumentation/devicetree/bindings/net/wireless/ti,wl1251.txt
- ti,power-gpio : GPIO connected to chip's PMEN pinDocumentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
- power-gpios : Specification for the pin connected to the gsl1680's
shutdown input. This needs to be driven high to take the gsl1680 out of its low power stateDocumentation/devicetree/bindings/input/touchscreen/ektf2127.txt
- power-gpios : GPIO specification for the pin connected to the
ektf2127's wake input. This needs to be driven high to take ektf2127 out of it's low power stateAs you can see others are using it to drive pins different from nRESET. As stated in datasheet:
"The TLV320DAC32 requires a hardware reset after power-up for proper operation. After all power supplies are at their specified values, the nRESET pin must be driven low for at least 10ns. If this reset sequence is not performed, the DAC32 may not respond properly to register reads/writes". That does not sound like anything to do with power.
Quoted 2 lines
(It seems the only difference between TLV320DAC33 and TLV320DAC32 is uses a ball grid array package vs QFN32)
Note that tlv320dac32 != tlv320dac33, they are not even register compatible devices... dac33 was created _for_ Nokia back in the days and as far as I know there is no publicly available documentation for dac33.
And yes, my pick to use power_gpio in the code was wrong, it should have been named as reset_gpio.
Quoted 14 lines
Quoted 9 lines
Quoted 5 lines
Quoted 2 lines
You are not helping.
The only way I can help here is to resend your patch with "reset-gpios" used, which I'm pretty sure you can handle yourself.
Well, you can do that, and then you can argue with the next person who feels one of the properties has to get his preferred color. Hard part is not changing code :-(.
Indeed, hard part is not to break DT compatibility later. Consider someone will have to add regulator support later, which you omitted to do - having both power supply and power gpio is a bit confusing, don't you think?
Quoted 9 lines
Anyway, time to stop arguing, feel free to do what you think is right, I do not have anything important to add :)
ladis
_______________________________________________
Alsa-devel mailing list
[email protected]
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
PATCH v2 1/1 tlv320dac33: Add device tree bindings
In reply to Pavel MachekThis adds device tree bindings for tlv320dac33.c.
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +32 -0
@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address + +Optional properties: + +- reset-gpios - gpio pin to power the device, active low + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes +- ti,burst-bclkdiv - BCLK divider value in burst mode + +Example: + +tlv320dac33: audio-codec@19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + reset-gpios = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Re: [PATCHv2] tlv320dac33: Add device tree bindings
Quoted 2 lines · Pavel Machek
This adds device tree bindings for
tlv320dac33.c.
Can you CC me for dac33 patches in the future, please?
Quoted 32 lines
Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +22
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address + +Optional properties: + +- reset-gpios - gpio pin to power the device, active low + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes +- ti,burst-bclkdiv - BCLK divider value in burst mode + +Example: + +tlv320dac33: audio-codec@19 {
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 32
Quoted 10 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +10
-0+ compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + reset-gpios = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Rob Herring
maintainerRe: [PATCHv2] tlv320dac33: Add device tree bindings
In reply to Pavel MachekQuoted 18 lines · Pavel Machek
This adds device tree bindings for
tlv320dac33.c.Signed-off-by Pavel Machek <[email protected]>Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +7
-0@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33"
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 17
Quoted 10 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +10
-0+- reg - I2C slave address + +Optional properties: + +- reset-gpios - gpio pin to power the device, active low + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes
space before tab ^
Documentation/devicetree/bindings/sound/tlv320dac33.txt line 18
Quoted 1 line
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +1
-0+- ti,burst-bclkdiv - BCLK divider value in burst mode
What are valid values? What's the default?
Quoted 19 lines
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +14
-0+ +Example: + +tlv320dac33: audio-codec at 19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + reset-gpios = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};Signature · 3 lines
-- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
PATCH v3 1/1 tlv320dac33: Add device tree bindings
In reply to Peter UjfalusiThis adds device tree bindings for tlv320dac33.c.
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +32 -0
@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address +- ti,burst-bclkdiv - BCLK divider value in burst mode. Valid range is 1..255. + +Optional properties: + +- reset-gpios - gpio pin to power the device, active high. + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes. + +Example: + +tlv320dac33: audio-codec@19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + reset-gpios = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Mark Brown
maintainerRe: [PATCHv3] tlv320dac33: Add device tree bindings
Quoted 5 lines · Pavel Machek
This adds device tree bindings for
tlv320dac33.c.Acked-by Peter Ujfalusi <[email protected]>Signed-off-by Pavel Machek <[email protected]>
Please submit patches using subject lines reflecting the style for the
subsystem. This makes it easier for people to identify relevant
patches. Look at what existing commits in the area you're changing are
doing and make sure your subject lines visually resemble what they're
doing.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180206/8f330dbe/attachment.sig>
Re: [PATCHv3] tlv320dac33: Add device tree bindings
Quoted 4 lines · Mark Brown
Quoted 3 lines · Pavel Machek
This adds device tree bindings for
tlv320dac33.c.
Quoted 8 lines
Quoted 2 lines
Acked-by Peter Ujfalusi <[email protected]>Signed-off-by Pavel Machek <[email protected]>Please submit patches using subject lines reflecting the style for the subsystem. This makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing.
AFAICT this goes to Documentation, not sound.
If you have any comments on V1 of this patch, that would be nice, I'd like to get that merged once we are finished with the bindings.
Pavel
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Mark Brown
maintainerRe: [PATCHv3] tlv320dac33: Add device tree bindings
Quoted 9 lines · Pavel Machek
Quoted 5 lines · Mark Brown
Please submit patches using subject lines reflecting the style for the subsystem. This makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing.
AFAICT this goes to Documentation, not sound.
Even if that were the case you're not following the commonly accepted practice there either.
Quoted 2 lines
If you have any comments on V1 of this patch, that would be nice, I'd like to get that merged once we are finished with the bindings.
It is the middle of the merge window, please be a bit more patient.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180206/2d5c509b/attachment.sig>
Re: [PATCHv3] tlv320dac33: Add device tree bindings
In reply to Pavel MachekQuoted 5 lines · Pavel Machek
This adds device tree bindings for
tlv320dac33.c.Acked-by Peter Ujfalusi <[email protected]>Signed-off-by Pavel Machek <[email protected]>
Re: [PATCHv3] tlv320dac33: Add device tree bindings
In reply to Mark BrownQuoted 11 lines · Mark Brown
Quoted 9 lines · Pavel Machek
Quoted 5 lines · Mark Brown
Please submit patches using subject lines reflecting the style for the subsystem. This makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing.
AFAICT this goes to Documentation, not sound.
Quoted 7 lines
Even if that were the case you're not following the commonly accepted practice there either.
Quoted 2 lines
If you have any comments on V1 of this patch, that would be nice, I'd like to get that merged once we are finished with the bindings.
It is the middle of the merge window, please be a bit more patient.
For the record, patch currently looks like this. If you have some comments on the code, I'd like to hear them.
Best regards,
Pavel
Documentation/devicetree/bindings/sound/tlv320dac33.txt new file +32 -0
@@ -0,0 +1,32 @@ +Texas Instruments - tlv320dac33 Codec module + +The tlv320dac33 serial control bus communicates through I2C protocols. + +Required properties: + +- compatible - "ti,tlv320dac33" +- reg - I2C slave address +- ti,burst-bclkdiv - BCLK divider value in burst mode. Valid range is 1..255. + +Optional properties: + +- reset-gpios - gpio pin to power the device, active high. + +- interrupts - The interrupt output from the device. +- interrupt-parent - The parent interrupt controller. + +- ti,keep-bclk - Keep the BCLK running in FIFO modes. + +Example: + +tlv320dac33: audio-codec at 19 { + compatible = "ti,tlv320dac33"; + reg = <0x19>; + + interrupt-parent = <&gpio2>; + interrupts = <21 1>; /* gpio_53, IRQF_TRIGGER_RISING */ + reset-gpios = <&gpio2 28 0>; /* gpio_60 */ + + ti,keep-bclk; + ti,burst-bclkdiv = <3>; +};
sound/soc/codecs/tlv320dac33.c +31 -12
79 lines not on this page · raw message
Signature · 9 lines
(english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 181 bytes Desc: Digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180224/a867dbd2/attachment.sig>
Re: [PATCHv3] tlv320dac33: Add device tree bindings
Hi,
Quoted 28 lines · Pavel Machek
Quoted 11 lines · Mark Brown
Quoted 9 lines · Pavel Machek
Quoted 5 lines · Mark Brown
Please submit patches using subject lines reflecting the style for the subsystem. This makes it easier for people to identify relevant patches. Look at what existing commits in the area you're changing are doing and make sure your subject lines visually resemble what they're doing.
AFAICT this goes to Documentation, not sound.
Quoted 7 lines
Even if that were the case you're not following the commonly accepted practice there either.
Quoted 2 lines
If you have any comments on V1 of this patch, that would be nice, I'd like to get that merged once we are finished with the bindings.
It is the middle of the merge window, please be a bit more patient.
For the record, patch currently looks like this. If you have some comments on the code, I'd like to hear them.
Best regards,
sound/soc/codecs/tlv320dac33.c +0
-0
...
Quoted 9 lines
sound/soc/codecs/tlv320dac33.c +1
-4@@ -1511,10 +1509,26 @@ static int dac33_i2c_probe(struct i2c_client *client,i2c_set_clientdata (client, dac33); - dac33->power_gpio = pdata->power_gpio; - dac33->burst_bclkdiv = pdata->burst_bclkdiv; - dac33->keep_bclk = pdata->keep_bclk; - dac33->mode1_latency = pdata->mode1_latency; +if (pdata) {
sound/soc/codecs/tlv320dac33.c static int dac33_i2c_probe(struct i2c_client *client, · line 1522
Quoted 10 lines
sound/soc/codecs/tlv320dac33.c +10
-0+ dac33->power_gpio = pdata->power_gpio; + dac33->burst_bclkdiv = pdata->burst_bclkdiv; + dac33->keep_bclk = pdata->keep_bclk; + dac33->mode1_latency = pdata->mode1_latency; + }else if (np) { + ret =of_get_named_gpio (np,"power-gpios" ,0 ); +if (ret >=0 ) + dac33->power_gpio = ret; +else + dac33->power_gpio =-1 ;
the code checks for (dac33->power_gpio >= 0) in live path, I guess you can just skip the power_gpio = -1 in case we don't have GPIO Handling of EPROBE_DEFER might be something we might want for the GPIO.
Quoted 21 lines
sound/soc/codecs/tlv320dac33.c +12
-0+ +if (of_property_read_bool (np,"ti,keep-bclk" )) + dac33->keep_bclk = true; + +of_property_read_u32 (np,"ti,burst-bclkdiv" , &dac33->burst_bclkdiv); + }else { +dev_err (&client->dev,"Platform data not set\n" ); +return -ENODEV ; + }if (!dac33->mode1_latency) dac33->mode1_latency =10000 ;/* 10ms */ dac33->irq = client->irq;@@ -1580,9 +1594,16 @@ static const struct i2c_device_id tlv320dac33_i2c_id[] = { };MODULE_DEVICE_TABLE (i2c, tlv320dac33_i2c_id); +static const struct of_device_id tlv320dac33_of_match[] = { + { .compatible ="ti,tlv320dac33" , }, + {},
sound/soc/codecs/tlv320dac33.c static const struct i2c_device_id tlv320dac33_i2c_id[] = { · line 1609
Quoted 10 lines
sound/soc/codecs/tlv320dac33.c +4
-0+}; +MODULE_DEVICE_TABLE (i2c, tlv320dac33_of_match); +static struct i2c_driver tlv320dac33_i2c_driver = { .driver = { .name ="tlv320dac33-codec" , + .of_match_table =of_match_ptr (tlv320dac33_of_match), }, .probe = dac33_i2c_probe, .remove = dac33_i2c_remove,
- Péter
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki