[PATCH v5 2/2] dt-bindings: mediatek: mt6359: add codec document
Tzung-Bi Shih
tzungbi at google.com
Mon Sep 7 09:37:12 EDT 2020
On Thu, Aug 20, 2020 at 3:40 AM Mark Brown <broonie at kernel.org> wrote:
>
> On Wed, Aug 19, 2020 at 11:42:27PM +0800, Tzung-Bi Shih wrote:
>
> > But I found struct mfd_cell also contains member .of_compatible. What
> > is the difference if we use compatible string (as is) for this device
> > instead of falling back to use device name to match?
>
> That's for binding the MFD subdevice to an OF node, you don't need to do
> that for a device like this - you can just use the of_node of the parent
> to get at the properties.
There is an issue we overlooked. In sound/soc/codecs/mt6359.c,
mt6359_parse_dt() cannot read the DT properties
(https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/sound/soc/codecs/mt6359.c?h=for-next#n2640).
The original DTS is as following:
pmic {
compatible = "mediatek,mt6359";
mt6359codec: mt6359codec {
compatible = "mediatek,mt6359-sound"; (1)
mediatek,dmic-mode = <1>;
mediatek,mic-type-0 = <2>;
}
}
After removing the line at (1), mt6359_parse_dt() cannot read the DT properties.
The PMIC drivers/mfd/mt6397-core.c:
- "mediatek,mt6359"
- has the struct mfd_cell of mt6359-sound
- adds all mfd_cells via devm_mfd_add_devices().
The audio codec sound/soc/codecs/mt6359.c:
- "mediatek,mt6359-sound"
Here are a few options we can come out with.
1. adds back the compatible string in the DTS
2. gets of_node of parent in mt6359.c, and iterates all children nodes
to get the desired properties
3. parses all children nodes in the PMIC driver, and put them into
either platform_data or device properties
(https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git/tree/include/linux/mfd/core.h?h=for-next#n77)
- The PMIC is common for several sub-devices. It makes less sense to
handle subdevice specific logic in the common code.
4. others
Could you share with us what would you suggest for fixing the issue?
More information about the linux-arm-kernel
mailing list