sound/soc/uniphier/aio-ld11.c

Source file repositories/reference/linux-study-clean/sound/soc/uniphier/aio-ld11.c

File Facts

System
Linux kernel
Corpus path
sound/soc/uniphier/aio-ld11.c
Extension
.c
Size
8175 bytes
Lines
357
Domain
Driver Families
Bucket
sound/soc
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
//
// Socionext UniPhier AIO ALSA driver for LD11/LD20.
//
// Copyright (c) 2016-2018 Socionext Inc.

#include <linux/module.h>

#include "aio.h"

static const struct uniphier_aio_spec uniphier_aio_ld11[] = {
	/* for HDMI PCM In, Pin:AI1Dx */
	{
		.name = AUD_NAME_PCMIN1,
		.gname = AUD_GNAME_HDMI,
		.swm = {
			.type  = PORT_TYPE_I2S,
			.dir   = PORT_DIR_INPUT,
			.rb    = { 21, 14, },
			.ch    = { 21, 14, },
			.iif   = { 5, 3, },
			.iport = { 0, AUD_HW_PCMIN1, },
		},
	},

	/* for SIF In, Pin:AI2Dx */
	{
		.name = AUD_NAME_PCMIN2,
		.swm = {
			.type  = PORT_TYPE_I2S,
			.dir   = PORT_DIR_INPUT,
			.rb    = { 22, 15, },
			.ch    = { 22, 15, },
			.iif   = { 6, 4, },
			.iport = { 1, AUD_HW_PCMIN2, },
		},
	},

	/* for Line In, Pin:AI3Dx */
	{
		.name = AUD_NAME_PCMIN3,
		.gname = AUD_GNAME_LINE,
		.swm = {
			.type  = PORT_TYPE_EVE,
			.dir   = PORT_DIR_INPUT,
			.rb    = { 23, 16, },
			.ch    = { 23, 16, },
			.iif   = { 7, 5, },
			.iport = { 2, AUD_HW_PCMIN3, },
		},
	},

	/* for S/PDIF In, Pin:AI1IEC */
	{
		.name = AUD_NAME_IECIN1,
		.gname = AUD_GNAME_IEC,
		.swm = {
			.type  = PORT_TYPE_SPDIF,
			.dir   = PORT_DIR_INPUT,
			.rb    = { 26, 17, },
			.ch    = { 26, 17, },
			.iif   = { 10, 6, },
			.iport = { 3, AUD_HW_IECIN1, },
		},
	},

	/* for Speaker, Pin:AO1Dx */
	{
		.name = AUD_NAME_HPCMOUT1,
		.swm = {
			.type  = PORT_TYPE_I2S,
			.dir   = PORT_DIR_OUTPUT,
			.rb    = { 0, 0, },
			.ch    = { 0, 0, },
			.oif   = { 0, 0, },
			.oport = { 0, AUD_HW_HPCMOUT1, },
		},
	},

	/* for HDMI PCM, Pin:AO2Dx */
	{
		.name = AUD_NAME_PCMOUT1,
		.gname = AUD_GNAME_HDMI,
		.swm = {
			.type  = PORT_TYPE_I2S,
			.dir   = PORT_DIR_OUTPUT,
			.rb    = { 0, 0, },
			.ch    = { 0, 0, },
			.oif   = { 0, 0, },
			.oport = { 3, AUD_HW_PCMOUT1, },

Annotation

Implementation Notes