[alsa-devel] [PATCH] [ALSA] ASoC: Add max98925 codec driver

Amish Kumar yesanishhere at gmail.com
Sat Jan 17 01:37:59 CET 2015


Ccing mark and Liam


>> On Jan 16, 2015, at 3:42 PM, anish <yesanishhere at gmail.com> wrote:
>> 
>>> On Fri, Jan 16, 2015 at 1:12 PM, Lars-Peter Clausen <lars at metafoo.de> wrote:
>>> On 01/16/2015 10:00 PM, anish wrote:
>>> 
>>> On Fri, Jan 16, 2015 at 9:11 AM, Lars-Peter Clausen <lars at metafoo.de>
>>> wrote:
>>>> 
>>>>> On 01/15/2015 10:17 PM, Anish Kumar wrote:
>>>>> 
>>>>> 
>>>>> From: Anish Kumar <anish.kumar at maximintegrated.com>
>>>>> 
>>>>> This patch adds the max98925 codec driver.
>>>>> 
>>>>> Signed-off-by: Anish Kumar <anish.kumar at maximintegrated.com>
>>>> 
>>>> 
>>>> 
>>>> Please make sure to submit drivers against the latest development version
>>>> of
>>>> the ASoC tree
>>>> 
>>>> (http://git.kernel.org/cgit/linux/kernel/git/broonie/sound.git/log/?h=for-next).
>>>> This has a couple of outdated things and won't even compile.
>>> 
>>> 
>>> When i checked on IRC i was told that linux-next is good. Anyway will
>>> rebase
>>> it against this one.
>> 
>> 
>> Yes, that was me who said that. But this driver will neither compile against
>> linux-next nor asoc/for-next.
>> 
>> Which raises another issue, the driver doesn't add any Makefile or Kconfig
>> entries, so even if it would compile you still can compile it.
>> 
>> 
>>>>> +static struct snd_soc_codec_driver soc_codec_dev_max98925 = {
>>>> 
>>>> 
>>>> 
>>>> const
>>>> 
>>>>> +       .probe            = max98925_probe,
>>>>> +       .set_bias_level   = max98925_set_bias_level,
>>>> 
>>>> 
>>>> 
>>>> You'll need at least some kind of DAPM, otherwise you CODEC won't do
>>>> anything.
> 
> As already mentioned over IRC this is just a basic power amplifier connected
> through i2s interface. Currently we do all the mixer settings by using
> the mixer control
> and ALSA callbacks such as prepare, hw_params are doing the other jobs.
> 
> I can create dapm path to represent the internals of amplifier but i
> was wondering
> can i tie it to the codec dai?
> If yes i can represent codec dai as AIF_IN and DAC as output. So that whenever
> codec dai is started it will trigger PA as well. Is that ok?
> 
>>> 
>>> 
>>> Yes this is most important comment. I wrongly mentioned this as codec
>>> but rather it is just mono Class DG audio amplifier  so it doesn't need
>>> any dapm connections. Mixer commands is good enough for this and i will
>>> change this in commit text as well.
>> 
>> 
>> Even a amplifier will have a output input and a audio output. Those should
>> be properly modeled in DAPM.
>> 
>> 
>>>> 
>>>>> +};
>>>>> +
>>>> 
>>>> 
>>>> [...]
>>>>> 
>>>>> 
>>>>> +/* There should be a second MAX98925 on the board */
>>>>> +static struct i2c_board_info max98925_i2c_second[] = {
>>>>> +       {
>>>>> +               I2C_BOARD_INFO("max98925R", 0x32),
>>>>> +       }
>>>>> +};
>>>>> +
>>>>> +struct i2c_client *add_second_device(int busnum)
>>>>> +{
>>>>> +       struct i2c_client *i2c = NULL;
>>>>> +       struct i2c_adapter *adapter;
>>>>> +
>>>>> +       adapter = i2c_get_adapter(busnum);
>>>>> +       if (adapter != NULL)
>>>>> +               i2c = i2c_new_device(adapter, max98925_i2c_second);
>>>>> +
>>>>> +       return i2c;
>>>>> +}
>>>> 
>>>> 
>>>> [...]
>>>>> 
>>>>> 
>>>>> +       /* Check for second MAX98925 */
>>>>> +       i2c_r = add_second_device(2);
>>>> 
>>>> 
>>>> 
>>>> If there are two devices instantiate them properly and create two CODEC
>>>> devices, not some kind of hackery like this.
>>> 
>>> 
>>> Ok but this is just audio amplifier do we  still need that?
>> 
>> 
>> Yes! There is no conceptual difference between a CODEC or an amplifier
>> driver at that level.
>> 
>> - Lars


More information about the Alsa-devel mailing list