Message ID | 381b367e0a4c6c9e00db74f1b0e91d383156ba86.1442500784.git.Adam.Thomson.Opensource@diasemi.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Sep 17, 2015 at 05:01:16PM +0100, Adam Thomson wrote: > +- dlg,io-lvl : Expected voltage level range for digital IO > + ["2.5V_3.6V", "1.2V_2.8V"] If the driver needs to read or set the voltage a supply is at it should do that via the regulator API. > +- dlg,cp-mchange : Charge pump voltage tracking mode > + ["largest_vol", "dac_vol", "sig_mag"] > +- dlg,cp-vol-thresh : Charge pump volume threshold value (6-bit value) > + [ 0 - 0x3F ] Why are these in the device tree rather than runtime parameters? > +Child node - 'da7219_aad': > + > +Required properties: > +- interrupt-parent : Specifies the phandle of the interrupt controller to which > + the IRQs from DA7219 AAD block are delivered to. > +- interrupts : IRQ line info for DA7219 AAD block. > + (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for > + further information relating to interrupt properties) Why is this not specified at the device level (the device does not appear to support other interrupts)?
On September 19, 2015 18:10, Mark Brown wrote: > > +- dlg,io-lvl : Expected voltage level range for digital IO > > + ["2.5V_3.6V", "1.2V_2.8V"] > > If the driver needs to read or set the voltage a supply is at it should > do that via the regulator API. This would just be a read for the driver. However it's a fair point, so I'll look to add passing of the regulator information for VDDIO, so i can set this based on read voltage. > > > +- dlg,cp-mchange : Charge pump voltage tracking mode > > + ["largest_vol", "dac_vol", "sig_mag"] > > +- dlg,cp-vol-thresh : Charge pump volume threshold value (6-bit value) > > + [ 0 - 0x3F ] > > Why are these in the device tree rather than runtime parameters? > From previous internal discussions, these seemed to be fire and forget parameters, hence their inclusion in the DT binding, rather than as controls. Personally didn't see either needing runtime updates. > > +Child node - 'da7219_aad': > > + > > +Required properties: > > +- interrupt-parent : Specifies the phandle of the interrupt controller to which > > + the IRQs from DA7219 AAD block are delivered to. > > +- interrupts : IRQ line info for DA7219 AAD block. > > + (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for > > + further information relating to interrupt properties) > > Why is this not specified at the device level (the device does not > appear to support other interrupts)? Given the way that the driver code was structured, and that the IRQ is only used for accessory detection, I added it to the child node. The other option would be to flatten out bindings, and remove the child node. Felt like keeping the accessory detect items separate though was a sensible approach. What is your feeling on this?
On Mon, Sep 21, 2015 at 10:36:04AM +0000, Opensource [Adam Thomson] wrote: > On September 19, 2015 18:10, Mark Brown wrote: > > > +- dlg,cp-mchange : Charge pump voltage tracking mode > > > + ["largest_vol", "dac_vol", "sig_mag"] > > > +- dlg,cp-vol-thresh : Charge pump volume threshold value (6-bit value) > > > + [ 0 - 0x3F ] > > Why are these in the device tree rather than runtime parameters? > From previous internal discussions, these seemed to be fire and forget > parameters, hence their inclusion in the DT binding, rather than as controls. > Personally didn't see either needing runtime updates. Make them runtime configurable. People can do an at boot runtime configuration if they like. > > > > +Required properties: > > > +- interrupt-parent : Specifies the phandle of the interrupt controller to which > > > + the IRQs from DA7219 AAD block are delivered to. > > > +- interrupts : IRQ line info for DA7219 AAD block. > > > + (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for > > > + further information relating to interrupt properties) > > Why is this not specified at the device level (the device does not > > appear to support other interrupts)? > Given the way that the driver code was structured, and that the IRQ is only used > for accessory detection, I added it to the child node. The other option would > be to flatten out bindings, and remove the child node. Felt like keeping the > accessory detect items separate though was a sensible approach. What is your > feeling on this? The child node is fine for collecting the parameters but the chip interrupt line should be at the chip level.
diff --git a/Documentation/devicetree/bindings/sound/da7219.txt b/Documentation/devicetree/bindings/sound/da7219.txt new file mode 100644 index 0000000..b29fe2e --- /dev/null +++ b/Documentation/devicetree/bindings/sound/da7219.txt @@ -0,0 +1,106 @@ +Dialog Semiconductor DA7219 Audio Codec bindings + +DA7219 is an audio codec with advanced accessory detect features. + +====== + +Required properties: +- compatible : Should be "dlg,da7219" +- reg: Specifies the I2C slave address + +Optional properties: +- wakeup-source: Flag to indicate this device can wake system (suspend/resume). + +- clocks : phandle and clock specifier for codec MCLK. +- clock-names : Clock name string for 'clocks' attribute, should be "mclk". + +- dlg,io-lvl : Expected voltage level range for digital IO + ["2.5V_3.6V", "1.2V_2.8V"] +- dlg,ldo-lvl : Required internal LDO voltage (mV) level + [<1050>, <1100>, <1200>, <1400>] +- dlg,micbias-lvl : Voltage (mV) for Mic Bias + [<1800>, <2000>, <2200>, <2400>, <2600>, <2800>, <3000>] +- dlg,mic-amp-in-sel : Mic input source type + ["diff", "se_p", "se_n"] +- dlg,cp-mchange : Charge pump voltage tracking mode + ["largest_vol", "dac_vol", "sig_mag"] +- dlg,cp-vol-thresh : Charge pump volume threshold value (6-bit value) + [ 0 - 0x3F ] + +====== + +Child node - 'da7219_aad': + +Required properties: +- interrupt-parent : Specifies the phandle of the interrupt controller to which + the IRQs from DA7219 AAD block are delivered to. +- interrupts : IRQ line info for DA7219 AAD block. + (See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for + further information relating to interrupt properties) + +Optional properties: +- dlg,micbias-pulse-lvl : Mic bias higher voltage pulse level (mV). + [<2800>, <2900>] +- dlg,micbias-pulse-time : Mic bias higher voltage pulse duration (ms) +- dlg,btn-cfg : Periodic button press measurements for 4-pole jack (ms) + [<2>, <5>, <10>, <50>, <100>, <200>, <500>] +- dlg,mic-det-thr : Impedance threshold for mic detection measurement (Ohms) + [<200>, <500>, <750>, <1000>] +- dlg,jack-ins-deb : Debounce time for jack insertion (ms) + [<5>, <10>, <20>, <50>, <100>, <200>, <500>, <1000>] +- dlg,jack-det-rate: Jack type detection latency (3/4 pole) + ["32ms_64ms", "64ms_128ms", "128ms_256ms", "256ms_512ms"] +- dlg,jack-rem-deb : Debounce time for jack removal (ms) + [<1>, <5>, <10>, <20>] +- dlg,a-d-btn-thr : Impedance threshold between buttons A and D + [0x0 - 0xFF] +- dlg,d-b-btn-thr : Impedance threshold between buttons D and B + [0x0 - 0xFF] +- dlg,b-c-btn-thr : Impedance threshold between buttons B and C + [0x0 - 0xFF] +- dlg,c-mic-btn-thr : Impedance threshold between button C and Mic + [0x0 - 0xFF] +- dlg,btn-avg : Number of 8-bit readings for averaged button measurement + [<1>, <2>, <4>, <8>] +- dlg,adc-1bit-rpt : Repeat count for 1-bit button measurement + [<1>, <2>, <4>, <8>] + +====== + +Example: + + codec: da7219@1a { + compatible = "dlg,da7219"; + reg = <0x1a>; + + clocks = <&clks 201>; + clock-names = "mclk"; + + dlg,io-lvl = "1.2V_2.8V"; + dlg,ldo-lvl = <1200>; + + dlg,micbias-lvl = <2600>; + dlg,mic-amp-in-sel = "diff"; + + dlg,cp-mchange = "sig_mag"; + dlg,cp-vol-thresh = <0x34>; + + da7219_aad { + interrupt-parent = <&gpio6>; + interrupts = <11 IRQ_TYPE_LEVEL_HIGH>; + + dlg,btn-cfg = <50>; + dlg,mic-det-thr = <500>; + dlg,jack-ins-deb = <20>; + dlg,jack-det-rate = "32ms_64ms"; + dlg,jack-rem-deb = <1>; + + dlg,a-d-btn-thr = <0xa>; + dlg,d-b-btn-thr = <0x16>; + dlg,b-c-btn-thr = <0x21>; + dlg,c-mic-btn-thr = <0x3E>; + + dlg,btn-avg = <4>; + dlg,adc-1bit-rpt = <1>; + }; + };
Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> --- Documentation/devicetree/bindings/sound/da7219.txt | 106 +++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/da7219.txt