On Thu, Aug 20, 2020 at 3:40 AM Mark Brown broonie@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...).
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/inclu...) - 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?