On 27/02/2024 16:18, Alexandre Mergnat wrote:
- type: boolean
- mediatek,dmic-iir-on:
- description:
Boolean which specifies whether the DMIC IIR is enabled.
If this property is not present the IIR is disabled.
"is enabled" or "enable it"?
You described the desired Linux feature or behavior, not the actual hardware. The bindings are about the latter, so instead you need to rephrase the property and its description to match actual hardware capabilities/features/configuration etc.
I will rephrase:
True to enable the Infinite Impulse Response (IIR) filter on the digital microphone inputs.
I still don't know why this is DT-specific. You still tell driver what to do...
- type: boolean
- mediatek,dmic-irr-mode:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
Selects stop band of IIR DC-removal filter.
0 = Software programmable custom coeff loaded by the driver.
Bindings are for hardware, not drivers. Why is this a property of board DTS?
Actually this is a hardware feature. Mode 1 t 5 are predefined filters. Mode 0, the HW will read some "coef filter registers" to setup the custom filter. the "coef filter regs" are written by the driver. Currently the coef values are hardcoded in the driver.
You don't get the point. Just because you choose some mode it does not mean is hardware feature for DT. Sampling frequency done by hardware is also "hardware feature", but do you put it to DT? No.
Explain why this is board-specific, not runtime configuration.
1 = 5Hz if 48KHz mode.
2 = 10Hz if 48KHz mode.
3 = 25Hz if 48KHz mode.
4 = 50Hz if 48KHz mode.
5 = 65Hz if 48KHz mode.
Use proper unit suffixes - hz.
- enum:
- 0
- 1
- 2
- 3
- 4
- 5
- mediatek,dmic-two-wire-mode:
- description:
Boolean which turns on digital microphone for two wire mode.
If this property is not present the two wire mode is disabled.
This looks like hardware property, but the naming looks like SW. Again you instruct what driver should do. Standard disclaimer:
You described the desired Linux feature or behavior, not the actual hardware. The bindings are about the latter, so instead you need to rephrase the property and its description to match actual hardware capabilities/features/configuration etc.
Actually this is a hardware feature. This is ALL I have to describe the HW behavior from the datasheet: " bit name: ul_dmic_two_wire_ctl Turns on digital microphone for two wire mode. 0: Turn off 1: Turn on
That's rather suggestion it is not a description of hardware but you want driver to do something...
"
On the board schematic, SoC and DMIC and linked by 3 pins:
- clk
- data0
- data1
IMHO, "two-wire-mode" means the HW use 2 pins for data, and the SoC must be aware of that by reading the register value written by the driver, using the value found in the DTS.
So this depends on type of connection of DMIC? Then rephrase description property like this.
I don't get why you think it wouldn't be hardware behavior.
Because telling what to write to the registers which is typical sign of people stuffing to DT whatever they need to configure the hardware.
Rephrase description: "True to enable the two wire mode of the digital microphone" Is it better ?
No, because again you describe some sort of mode. If you insist on such description, then my answer is: it's runtime, so not suitable for DT. Instead describe what is the hardware problem/configuration, e.g. "DMIC is connected with only CLK and DATA0, without third pin" etc.
About the property name, "mediatek,dmic-two-wire-ctl" sound better for you ?
To sound more like a register less like physical characteristic of the board? No. The name can stay, I don't have better ideas.
Best regards, Krzysztof