asoc: add machine driver for sa8155 based automotive platform

Add machine driver for SA8155 based automotive platform,
which is based on mobile machine driver with addition of
extended support for TDM interfaces which is used for data
transfer between SA8155 SoC and the automotive COODEC H/W.
Changes include TDM backend and refactored automotive
frontend DAI links as well as kcontrol functions to
configure TDM slot and offset configuration.

Add 815x machine driver init wrapper to allow registration
of multiple machine driver in single module init call.

CRs-fixed: 2268293
Change-Id: I30eb22a7c5d6b2d963a5ea621b5a00e8dbc27fed
Signed-off-by: Derek Chen <chenche@codeaurora.org>
This commit is contained in:
Derek Chen 2018-06-26 21:52:59 -04:00
parent 6891816204
commit 39955471cd
5 changed files with 7206 additions and 1 deletions

View File

@ -101,7 +101,9 @@ endif
# for SM8150 sound card driver
ifdef CONFIG_SND_SOC_SM8150
MACHINE_OBJS += sa8155.o
MACHINE_OBJS += sm8150.o
MACHINE_OBJS += machine_815x_init.o
endif
# for SM6150 sound card driver

36
asoc/machine_815x_init.c Normal file
View File

@ -0,0 +1,36 @@
/*
Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 and
only version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include "machine_815x_init.h"
static int __init audio_machine_815x_init(void)
{
sm8150_init();
sa8155_init();
return 0;
}
static void audio_machine_815x_exit(void)
{
sm8150_exit();
sa8155_exit();
}
module_init(audio_machine_815x_init);
module_exit(audio_machine_815x_exit);
MODULE_DESCRIPTION("Audio Machine 815X Driver");
MODULE_LICENSE("GPL v2");

23
asoc/machine_815x_init.h Normal file
View File

@ -0,0 +1,23 @@
/*
Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 and
only version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*
*/
#ifndef __MACHINE_815X_INIT_H__
#define __MACHINE_815X_INIT_H__
int sm8150_init(void);
int sa8155_init(void);
void sm8150_exit(void);
void sa8155_exit(void);
#endif

7133
asoc/sa8155.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7557,7 +7557,18 @@ static struct platform_driver sm8150_asoc_machine_driver = {
.probe = msm_asoc_machine_probe,
.remove = msm_asoc_machine_remove,
};
module_platform_driver(sm8150_asoc_machine_driver);
int __init sm8150_init(void)
{
pr_debug("%s\n", __func__);
return platform_driver_register(&sm8150_asoc_machine_driver);
}
void sm8150_exit(void)
{
pr_debug("%s\n", __func__);
platform_driver_unregister(&sm8150_asoc_machine_driver);
}
MODULE_DESCRIPTION("ALSA SoC msm");
MODULE_LICENSE("GPL v2");