[alsa-devel] [RFC v3 06/11] ASoC: hdac_hda: add ASoC based HDA codec driver

Ughreja, Rakesh A rakesh.a.ughreja at intel.com
Tue Dec 19 17:14:38 CET 2017



>-----Original Message-----
>From: Takashi Iwai [mailto:tiwai at suse.de]
>Sent: Tuesday, December 19, 2017 9:10 PM
>To: Ughreja, Rakesh A <rakesh.a.ughreja at intel.com>
>Cc: alsa-devel at alsa-project.org; Koul, Vinod <vinod.koul at intel.com>; pierre-
>louis.bossart at linux.intel.com; liam.r.girdwood at linux.intel.com; Patches Audio
><patches.audio at intel.com>; broonie at kernel.org
>Subject: Re: [alsa-devel] [RFC v3 06/11] ASoC: hdac_hda: add ASoC based HDA
>codec driver
>


>>
>> Are you referring to the calling overhead because of the wrapper involved ?
>>
>> The way I see is we have two options.
>>
>> 1. Single driver option. - There is going to be a common wrapper here,
>> which needs to come into picture before it re-directs it to the appropriate
>> driver. This is what is done in the following patch.
>>
>> 2. Separate driver for ASoC and Legacy. - This requires ID tables, Can we move
>> id tables into separate header file ? then it can solve the problem involved in
>> option 1. This also solves the problem related to wrappers as well as the
>> problem related to accessing the ID tables via extern symbols, that you
>> mentioned in the previous series.
>
>I believe (2) is no-go, it's a straight maintenance hell.

Got it.

>
>> >May we start from a "big picture" to describe the whole driver
>> >bindings?
>> >
>>
>> This patch registers the hdac_driver callback at the root level agnostic to
>> asoc and legacy and then selects the appropriate legacy or asoc callbacks,
>> based on the bus which enumerated the driver.
>>
>> I cannot think of any other approach if we want to go with a single driver
>> approach. You will have to give some more hints :-)
>
>Well, a big unclear question to me is why do we need to bind the stuff
>so differently.  Can't we simply provide the same binding to the
>legacy codec from asoc driver?  In the legacy-support mode, asoc
>driver creates the legacy-compatible codec objects with the
>legacy-compatible hda_bus.
>

Both the drivers i.e. ASoC and Legacy are registering the driver in
exact same way by filling the hdac_driver fields. There is no difference
in terms of HDA bus interactions. First series unifies even the data
structures hdac_device, hdac_driver and hdac_bus.

Once the device is enumerated and the hdac_driver->probe
is called the difference starts, primarily because ASoC vs ALSA
codec driver differences. Here also if you notice, after taking care of 
the ASoC related components, ASoC codec driver calls exact same APIs of the 
legacy HDA codec driver which are called by the legacy controller driver.

The hda_bus and hda_codec data structures are also used by the ASoC
driver as it is to call legacy codec driver APIs.

So I am not sure if we are doing binding in two different ways, or I
misunderstood you completely ?

Regards,
Rakesh



More information about the Alsa-devel mailing list