On Wed, May 13, 2015 at 10:21 AM, Dylan Reid <dgreid at chromium.org> wrote: > On Wed, May 13, 2015 at 9:42 AM, Mark Brown <broonie at kernel.org> wrote: >> On Wed, May 13, 2015 at 09:23:01PM +0800, zhengxing wrote: >>> On 2015?05?13? 03:22, Mark Brown wrote: >> >>> >Is it not possible to extend simple card to handle your use cases? >>> >Given the very generic naming and the fact that things like jack >>> >detection and so on should depend on the CODEC and board usually rather >>> >than on the SoC it doesn't sound like this is Rockchip specific. >> >>> >This also looks like you're reimplementing some device model enumeration >>> >stuff which probably shouldn't be happening but let's understand the >>> >problem you're trying to solve here before going too far into the code. >> >>> Because we are trying to bring rt5650 in the project, so we intend to >>> describe supported codecs with DTS via only a rockchip machine driver file, >>> others remain pre-implement(like max98090 / rt5645 that vendor machine >>> driver). >> >> I don't undertand what you're saying here, sorry - why is this not just >> a case of writing multiple machine drivers? > > I don't understand this either. I'd think the best solution is > simple-card, configured through DTS for each device. > >> >>> I communicated with Dylan, and he told me that the jack detection is an >>> issue in the simple-card, and suggested we are better to send them at >>> present. >> >> But what are these issues? > > The issue I was referring to when I spoke with rock chip was the need > to pass the jack simple-card creates to the headset chip or codec. We > need a way to specify a device like a tsa227e or rt5650 to pass the > jack to, which events are supported by the jack, and a generic API for > passing the jack. I'm having some trouble envisioning how to pass the jack to the headset chip in a generic way. A callback could be added to snd_soc_component_driver, or a snd_soc_headset_driver could be added. The headset_drive would fit the ts3a227e well, but not the rt5645 which is also a full blown codec.