diff options
author | Aaron Durbin <adurbin@chromium.org> | 2016-06-28 15:00:30 -0500 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2016-06-29 23:15:29 +0200 |
commit | e9657bc8dc6dc94216fcbbc9b83c12b210c32be9 (patch) | |
tree | bfdd123492d1f2287299e0542ab80bb97e624998 /src/soc/intel/skylake/nhlt/ssm4567.c | |
parent | 5e0a9c7436f77a4e488d77c80fba38cd00b67e67 (diff) |
soc/intel/skylake: refactor nhlt support
Utilize the new NHLT helper functions by driving the NHLT
endpoints through data descriptors.
Change-Id: I80838214d3615b83d4939ec2d96a4fd7050d5920
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/15488
Tested-by: build bot (Jenkins)
Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'src/soc/intel/skylake/nhlt/ssm4567.c')
-rw-r--r-- | src/soc/intel/skylake/nhlt/ssm4567.c | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/src/soc/intel/skylake/nhlt/ssm4567.c b/src/soc/intel/skylake/nhlt/ssm4567.c index 55d9481852..6808bffe3a 100644 --- a/src/soc/intel/skylake/nhlt/ssm4567.c +++ b/src/soc/intel/skylake/nhlt/ssm4567.c @@ -15,7 +15,7 @@ #include <soc/nhlt.h> -static const struct nhlt_format_config ssm4567_render_cfg[] = { +static const struct nhlt_format_config ssm4567_render_formats[] = { /* 48 KHz 24-bits per sample. */ { .num_channels = 2, @@ -28,7 +28,7 @@ static const struct nhlt_format_config ssm4567_render_cfg[] = { }; /* Capture Blob used for IV feedback for Speaker Protection Algorithm */ -static const struct nhlt_format_config ssm4567_capture_cfg[] = { +static const struct nhlt_format_config ssm4567_capture_formats[] = { /* 48 KHz 32-bits per sample. */ { .num_channels = 4, @@ -39,33 +39,32 @@ static const struct nhlt_format_config ssm4567_capture_cfg[] = { }, }; -int nhlt_soc_add_ssm4567(struct nhlt *nhlt, int hwlink) -{ - struct nhlt_endpoint *endp; - +static const struct nhlt_endp_descriptor ssm4567_descriptors[] = { /* Render Endpoint */ - endp = nhlt_soc_add_endpoint(nhlt, hwlink, AUDIO_DEV_I2S, - NHLT_DIR_RENDER); - - if (endp == NULL) - return -1; - - if (nhlt_endpoint_add_formats(endp, ssm4567_render_cfg, - ARRAY_SIZE(ssm4567_render_cfg))) - return -1; - - /* Capture Endpoint for IV Feedback */ - endp = nhlt_soc_add_endpoint(nhlt, hwlink, AUDIO_DEV_I2S, - NHLT_DIR_CAPTURE); - - if (endp == NULL) - return -1; - - if (nhlt_endpoint_add_formats(endp, ssm4567_capture_cfg, - ARRAY_SIZE(ssm4567_capture_cfg))) - return -1; - - nhlt_next_instance(nhlt, NHLT_LINK_SSP); + { + .link = NHLT_LINK_SSP, + .device = NHLT_SSP_DEV_I2S, + .direction = NHLT_DIR_RENDER, + .vid = NHLT_VID, + .did = NHLT_DID_SSP, + .formats = ssm4567_render_formats, + .num_formats = ARRAY_SIZE(ssm4567_render_formats), + }, + /* Capture Endpoint */ + { + .link = NHLT_LINK_SSP, + .device = NHLT_SSP_DEV_I2S, + .direction = NHLT_DIR_CAPTURE, + .vid = NHLT_VID, + .did = NHLT_DID_SSP, + .formats = ssm4567_capture_formats, + .num_formats = ARRAY_SIZE(ssm4567_capture_formats), + }, +}; - return 0; +int nhlt_soc_add_ssm4567(struct nhlt *nhlt, int hwlink) +{ + /* Virtual bus id of SSP links are the hardware port ids proper. */ + return nhlt_add_ssp_endpoints(nhlt, hwlink, ssm4567_descriptors, + ARRAY_SIZE(ssm4567_descriptors)); } |