Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
3843e87e
Commit
3843e87e
authored
Jun 17, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/pxa' into asoc-next
parents
b2d34a82
55dafe5d
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
4 additions
and
408 deletions
+4
-408
sound/soc/pxa/Kconfig
sound/soc/pxa/Kconfig
+0
-20
sound/soc/pxa/Makefile
sound/soc/pxa/Makefile
+0
-4
sound/soc/pxa/mmp-pcm.c
sound/soc/pxa/mmp-pcm.c
+3
-3
sound/soc/pxa/mmp-sspa.c
sound/soc/pxa/mmp-sspa.c
+1
-1
sound/soc/pxa/saarb.c
sound/soc/pxa/saarb.c
+0
-190
sound/soc/pxa/tavorevb3.c
sound/soc/pxa/tavorevb3.c
+0
-189
sound/soc/pxa/zylonite.c
sound/soc/pxa/zylonite.c
+0
-1
No files found.
sound/soc/pxa/Kconfig
View file @
3843e87e
...
...
@@ -130,26 +130,6 @@ config SND_PXA2XX_SOC_PALM27X
Say Y if you want to add support for SoC audio on
Palm T|X, T5, E2 or LifeDrive handheld computer.
config SND_SOC_SAARB
tristate "SoC Audio support for Marvell Saarb"
depends on SND_PXA2XX_SOC && MACH_SAARB
select MFD_88PM860X
select SND_PXA_SOC_SSP
select SND_SOC_88PM860X
help
Say Y if you want to add support for SoC audio on the
Marvell Saarb reference platform.
config SND_SOC_TAVOREVB3
tristate "SoC Audio support for Marvell Tavor EVB3"
depends on SND_PXA2XX_SOC && MACH_TAVOREVB3
select MFD_88PM860X
select SND_PXA_SOC_SSP
select SND_SOC_88PM860X
help
Say Y if you want to add support for SoC audio on the
Marvell Saarb reference platform.
config SND_PXA910_SOC
tristate "SoC Audio for Marvell PXA910 chip"
depends on ARCH_MMP && SND
...
...
sound/soc/pxa/Makefile
View file @
3843e87e
...
...
@@ -23,8 +23,6 @@ snd-soc-e800-objs := e800_wm9712.o
snd-soc-spitz-objs
:=
spitz.o
snd-soc-em-x270-objs
:=
em-x270.o
snd-soc-palm27x-objs
:=
palm27x.o
snd-soc-saarb-objs
:=
saarb.o
snd-soc-tavorevb3-objs
:=
tavorevb3.o
snd-soc-zylonite-objs
:=
zylonite.o
snd-soc-hx4700-objs
:=
hx4700.o
snd-soc-magician-objs
:=
magician.o
...
...
@@ -48,8 +46,6 @@ obj-$(CONFIG_SND_PXA2XX_SOC_HX4700) += snd-soc-hx4700.o
obj-$(CONFIG_SND_PXA2XX_SOC_MAGICIAN)
+=
snd-soc-magician.o
obj-$(CONFIG_SND_PXA2XX_SOC_MIOA701)
+=
snd-soc-mioa701.o
obj-$(CONFIG_SND_PXA2XX_SOC_Z2)
+=
snd-soc-z2.o
obj-$(CONFIG_SND_SOC_SAARB)
+=
snd-soc-saarb.o
obj-$(CONFIG_SND_SOC_TAVOREVB3)
+=
snd-soc-tavorevb3.o
obj-$(CONFIG_SND_SOC_ZYLONITE)
+=
snd-soc-zylonite.o
obj-$(CONFIG_SND_PXA2XX_SOC_IMOTE2)
+=
snd-soc-imote2.o
obj-$(CONFIG_SND_SOC_RAUMFELD)
+=
snd-soc-raumfeld.o
...
...
sound/soc/pxa/mmp-pcm.c
View file @
3843e87e
...
...
@@ -147,7 +147,7 @@ static int mmp_pcm_mmap(struct snd_pcm_substream *substream,
vma
->
vm_end
-
vma
->
vm_start
,
vma
->
vm_page_prot
);
}
struct
snd_pcm_ops
mmp_pcm_ops
=
{
st
atic
st
ruct
snd_pcm_ops
mmp_pcm_ops
=
{
.
open
=
mmp_pcm_open
,
.
close
=
snd_dmaengine_pcm_close_release_chan
,
.
ioctl
=
snd_pcm_lib_ioctl
,
...
...
@@ -208,7 +208,7 @@ static int mmp_pcm_preallocate_dma_buffer(struct snd_pcm_substream *substream,
return
0
;
}
int
mmp_pcm_new
(
struct
snd_soc_pcm_runtime
*
rtd
)
static
int
mmp_pcm_new
(
struct
snd_soc_pcm_runtime
*
rtd
)
{
struct
snd_pcm_substream
*
substream
;
struct
snd_pcm
*
pcm
=
rtd
->
pcm
;
...
...
@@ -229,7 +229,7 @@ int mmp_pcm_new(struct snd_soc_pcm_runtime *rtd)
return
ret
;
}
struct
snd_soc_platform_driver
mmp_soc_platform
=
{
st
atic
st
ruct
snd_soc_platform_driver
mmp_soc_platform
=
{
.
ops
=
&
mmp_pcm_ops
,
.
pcm_new
=
mmp_pcm_new
,
.
pcm_free
=
mmp_pcm_free_dma_buffers
,
...
...
sound/soc/pxa/mmp-sspa.c
View file @
3843e87e
...
...
@@ -388,7 +388,7 @@ static struct snd_soc_dai_ops mmp_sspa_dai_ops = {
.
set_fmt
=
mmp_sspa_set_dai_fmt
,
};
struct
snd_soc_dai_driver
mmp_sspa_dai
=
{
st
atic
st
ruct
snd_soc_dai_driver
mmp_sspa_dai
=
{
.
probe
=
mmp_sspa_probe
,
.
playback
=
{
.
channels_min
=
1
,
...
...
sound/soc/pxa/saarb.c
deleted
100644 → 0
View file @
b2d34a82
/*
* saarb.c -- SoC audio for saarb
*
* Copyright (C) 2010 Marvell International Ltd.
* Haojian Zhuang <haojian.zhuang@marvell.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/device.h>
#include <linux/clk.h>
#include <linux/i2c.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/jack.h>
#include <asm/mach-types.h>
#include "../codecs/88pm860x-codec.h"
#include "pxa-ssp.h"
static
int
saarb_pm860x_init
(
struct
snd_soc_pcm_runtime
*
rtd
);
static
struct
platform_device
*
saarb_snd_device
;
static
struct
snd_soc_jack
hs_jack
,
mic_jack
;
static
struct
snd_soc_jack_pin
hs_jack_pins
[]
=
{
{
.
pin
=
"Headset Stereophone"
,
.
mask
=
SND_JACK_HEADPHONE
,
},
};
static
struct
snd_soc_jack_pin
mic_jack_pins
[]
=
{
{
.
pin
=
"Headset Mic 2"
,
.
mask
=
SND_JACK_MICROPHONE
,
},
};
/* saarb machine dapm widgets */
static
const
struct
snd_soc_dapm_widget
saarb_dapm_widgets
[]
=
{
SND_SOC_DAPM_HP
(
"Headphone Stereophone"
,
NULL
),
SND_SOC_DAPM_LINE
(
"Lineout Out 1"
,
NULL
),
SND_SOC_DAPM_LINE
(
"Lineout Out 2"
,
NULL
),
SND_SOC_DAPM_SPK
(
"Ext Speaker"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Ext Mic 1"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Headset Mic"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Ext Mic 3"
,
NULL
),
};
/* saarb machine audio map */
static
const
struct
snd_soc_dapm_route
saarb_audio_map
[]
=
{
{
"Headset Stereophone"
,
NULL
,
"HS1"
},
{
"Headset Stereophone"
,
NULL
,
"HS2"
},
{
"Ext Speaker"
,
NULL
,
"LSP"
},
{
"Ext Speaker"
,
NULL
,
"LSN"
},
{
"Lineout Out 1"
,
NULL
,
"LINEOUT1"
},
{
"Lineout Out 2"
,
NULL
,
"LINEOUT2"
},
{
"MIC1P"
,
NULL
,
"Mic1 Bias"
},
{
"MIC1N"
,
NULL
,
"Mic1 Bias"
},
{
"Mic1 Bias"
,
NULL
,
"Ext Mic 1"
},
{
"MIC2P"
,
NULL
,
"Mic1 Bias"
},
{
"MIC2N"
,
NULL
,
"Mic1 Bias"
},
{
"Mic1 Bias"
,
NULL
,
"Headset Mic 2"
},
{
"MIC3P"
,
NULL
,
"Mic3 Bias"
},
{
"MIC3N"
,
NULL
,
"Mic3 Bias"
},
{
"Mic3 Bias"
,
NULL
,
"Ext Mic 3"
},
};
static
int
saarb_i2s_hw_params
(
struct
snd_pcm_substream
*
substream
,
struct
snd_pcm_hw_params
*
params
)
{
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
cpu_dai
=
rtd
->
cpu_dai
;
int
width
=
snd_pcm_format_physical_width
(
params_format
(
params
));
int
ret
;
ret
=
snd_soc_dai_set_sysclk
(
cpu_dai
,
PXA_SSP_CLK_NET_PLL
,
0
,
PM860X_CLK_DIR_OUT
);
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
0
,
PM860X_CLK_DIR_OUT
);
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_dai_set_tdm_slot
(
cpu_dai
,
3
,
3
,
2
,
width
);
return
ret
;
}
static
struct
snd_soc_ops
saarb_i2s_ops
=
{
.
hw_params
=
saarb_i2s_hw_params
,
};
static
struct
snd_soc_dai_link
saarb_dai
[]
=
{
{
.
name
=
"88PM860x I2S"
,
.
stream_name
=
"I2S Audio"
,
.
cpu_dai_name
=
"pxa-ssp-dai.1"
,
.
codec_dai_name
=
"88pm860x-i2s"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"88pm860x-codec"
,
.
init
=
saarb_pm860x_init
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
ops
=
&
saarb_i2s_ops
,
},
};
static
struct
snd_soc_card
snd_soc_card_saarb
=
{
.
name
=
"Saarb"
,
.
owner
=
THIS_MODULE
,
.
dai_link
=
saarb_dai
,
.
num_links
=
ARRAY_SIZE
(
saarb_dai
),
.
dapm_widgets
=
saarb_dapm_widgets
,
.
num_dapm_widgets
=
ARRAY_SIZE
(
saarb_dapm_widgets
),
.
dapm_routes
=
saarb_audio_map
,
.
num_dapm_routes
=
ARRAY_SIZE
(
saarb_audio_map
),
};
static
int
saarb_pm860x_init
(
struct
snd_soc_pcm_runtime
*
rtd
)
{
struct
snd_soc_codec
*
codec
=
rtd
->
codec
;
struct
snd_soc_dapm_context
*
dapm
=
&
codec
->
dapm
;
/* connected pins */
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Speaker"
);
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Mic 1"
);
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Mic 3"
);
snd_soc_dapm_disable_pin
(
dapm
,
"Headset Mic 2"
);
snd_soc_dapm_disable_pin
(
dapm
,
"Headset Stereophone"
);
/* Headset jack detection */
snd_soc_jack_new
(
codec
,
"Headphone Jack"
,
SND_JACK_HEADPHONE
|
SND_JACK_BTN_0
|
SND_JACK_BTN_1
|
SND_JACK_BTN_2
,
&
hs_jack
);
snd_soc_jack_add_pins
(
&
hs_jack
,
ARRAY_SIZE
(
hs_jack_pins
),
hs_jack_pins
);
snd_soc_jack_new
(
codec
,
"Microphone Jack"
,
SND_JACK_MICROPHONE
,
&
mic_jack
);
snd_soc_jack_add_pins
(
&
mic_jack
,
ARRAY_SIZE
(
mic_jack_pins
),
mic_jack_pins
);
/* headphone, microphone detection & headset short detection */
pm860x_hs_jack_detect
(
codec
,
&
hs_jack
,
SND_JACK_HEADPHONE
,
SND_JACK_BTN_0
,
SND_JACK_BTN_1
,
SND_JACK_BTN_2
);
pm860x_mic_jack_detect
(
codec
,
&
hs_jack
,
SND_JACK_MICROPHONE
);
return
0
;
}
static
int
__init
saarb_init
(
void
)
{
int
ret
;
if
(
!
machine_is_saarb
())
return
-
ENODEV
;
saarb_snd_device
=
platform_device_alloc
(
"soc-audio"
,
-
1
);
if
(
!
saarb_snd_device
)
return
-
ENOMEM
;
platform_set_drvdata
(
saarb_snd_device
,
&
snd_soc_card_saarb
);
ret
=
platform_device_add
(
saarb_snd_device
);
if
(
ret
)
platform_device_put
(
saarb_snd_device
);
return
ret
;
}
static
void
__exit
saarb_exit
(
void
)
{
platform_device_unregister
(
saarb_snd_device
);
}
module_init
(
saarb_init
);
module_exit
(
saarb_exit
);
MODULE_AUTHOR
(
"Haojian Zhuang <haojian.zhuang@marvell.com>"
);
MODULE_DESCRIPTION
(
"ALSA SoC 88PM860x Saarb"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/pxa/tavorevb3.c
deleted
100644 → 0
View file @
b2d34a82
/*
* tavorevb3.c -- SoC audio for Tavor EVB3
*
* Copyright (C) 2010 Marvell International Ltd.
* Haojian Zhuang <haojian.zhuang@marvell.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/device.h>
#include <linux/clk.h>
#include <linux/i2c.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/jack.h>
#include <asm/mach-types.h>
#include "../codecs/88pm860x-codec.h"
#include "pxa-ssp.h"
static
int
evb3_pm860x_init
(
struct
snd_soc_pcm_runtime
*
rtd
);
static
struct
platform_device
*
evb3_snd_device
;
static
struct
snd_soc_jack
hs_jack
,
mic_jack
;
static
struct
snd_soc_jack_pin
hs_jack_pins
[]
=
{
{
.
pin
=
"Headset Stereophone"
,
.
mask
=
SND_JACK_HEADPHONE
,
},
};
static
struct
snd_soc_jack_pin
mic_jack_pins
[]
=
{
{
.
pin
=
"Headset Mic 2"
,
.
mask
=
SND_JACK_MICROPHONE
,
},
};
/* tavorevb3 machine dapm widgets */
static
const
struct
snd_soc_dapm_widget
evb3_dapm_widgets
[]
=
{
SND_SOC_DAPM_HP
(
"Headset Stereophone"
,
NULL
),
SND_SOC_DAPM_LINE
(
"Lineout Out 1"
,
NULL
),
SND_SOC_DAPM_LINE
(
"Lineout Out 2"
,
NULL
),
SND_SOC_DAPM_SPK
(
"Ext Speaker"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Ext Mic 1"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Headset Mic 2"
,
NULL
),
SND_SOC_DAPM_MIC
(
"Ext Mic 3"
,
NULL
),
};
/* tavorevb3 machine audio map */
static
const
struct
snd_soc_dapm_route
evb3_audio_map
[]
=
{
{
"Headset Stereophone"
,
NULL
,
"HS1"
},
{
"Headset Stereophone"
,
NULL
,
"HS2"
},
{
"Ext Speaker"
,
NULL
,
"LSP"
},
{
"Ext Speaker"
,
NULL
,
"LSN"
},
{
"Lineout Out 1"
,
NULL
,
"LINEOUT1"
},
{
"Lineout Out 2"
,
NULL
,
"LINEOUT2"
},
{
"MIC1P"
,
NULL
,
"Mic1 Bias"
},
{
"MIC1N"
,
NULL
,
"Mic1 Bias"
},
{
"Mic1 Bias"
,
NULL
,
"Ext Mic 1"
},
{
"MIC2P"
,
NULL
,
"Mic1 Bias"
},
{
"MIC2N"
,
NULL
,
"Mic1 Bias"
},
{
"Mic1 Bias"
,
NULL
,
"Headset Mic 2"
},
{
"MIC3P"
,
NULL
,
"Mic3 Bias"
},
{
"MIC3N"
,
NULL
,
"Mic3 Bias"
},
{
"Mic3 Bias"
,
NULL
,
"Ext Mic 3"
},
};
static
int
evb3_i2s_hw_params
(
struct
snd_pcm_substream
*
substream
,
struct
snd_pcm_hw_params
*
params
)
{
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_dai
*
codec_dai
=
rtd
->
codec_dai
;
struct
snd_soc_dai
*
cpu_dai
=
rtd
->
cpu_dai
;
int
width
=
snd_pcm_format_physical_width
(
params_format
(
params
));
int
ret
;
ret
=
snd_soc_dai_set_sysclk
(
cpu_dai
,
PXA_SSP_CLK_NET_PLL
,
0
,
PM860X_CLK_DIR_OUT
);
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_dai_set_sysclk
(
codec_dai
,
0
,
0
,
PM860X_CLK_DIR_OUT
);
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_dai_set_tdm_slot
(
cpu_dai
,
3
,
3
,
2
,
width
);
return
ret
;
}
static
struct
snd_soc_ops
evb3_i2s_ops
=
{
.
hw_params
=
evb3_i2s_hw_params
,
};
static
struct
snd_soc_dai_link
evb3_dai
[]
=
{
{
.
name
=
"88PM860x I2S"
,
.
stream_name
=
"I2S Audio"
,
.
cpu_dai_name
=
"pxa-ssp-dai.1"
,
.
codec_dai_name
=
"88pm860x-i2s"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"88pm860x-codec"
,
.
init
=
evb3_pm860x_init
,
.
dai_fmt
=
SND_SOC_DAIFMT_I2S
|
SND_SOC_DAIFMT_NB_NF
|
SND_SOC_DAIFMT_CBM_CFM
,
.
ops
=
&
evb3_i2s_ops
,
},
};
static
struct
snd_soc_card
snd_soc_card_evb3
=
{
.
name
=
"Tavor EVB3"
,
.
owner
=
THIS_MODULE
,
.
dai_link
=
evb3_dai
,
.
num_links
=
ARRAY_SIZE
(
evb3_dai
),
.
dapm_widgets
=
evb3_dapm_widgets
,
.
num_dapm_widgets
=
ARRAY_SIZE
(
evb3_dapm_widgets
),
.
dapm_routes
=
evb3_audio_map
,
.
num_dapm_routes
=
ARRAY_SIZE
(
evb3_audio_map
),
};
static
int
evb3_pm860x_init
(
struct
snd_soc_pcm_runtime
*
rtd
)
{
struct
snd_soc_codec
*
codec
=
rtd
->
codec
;
struct
snd_soc_dapm_context
*
dapm
=
&
codec
->
dapm
;
/* connected pins */
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Speaker"
);
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Mic 1"
);
snd_soc_dapm_enable_pin
(
dapm
,
"Ext Mic 3"
);
snd_soc_dapm_disable_pin
(
dapm
,
"Headset Mic 2"
);
snd_soc_dapm_disable_pin
(
dapm
,
"Headset Stereophone"
);
/* Headset jack detection */
snd_soc_jack_new
(
codec
,
"Headphone Jack"
,
SND_JACK_HEADPHONE
|
SND_JACK_BTN_0
|
SND_JACK_BTN_1
|
SND_JACK_BTN_2
,
&
hs_jack
);
snd_soc_jack_add_pins
(
&
hs_jack
,
ARRAY_SIZE
(
hs_jack_pins
),
hs_jack_pins
);
snd_soc_jack_new
(
codec
,
"Microphone Jack"
,
SND_JACK_MICROPHONE
,
&
mic_jack
);
snd_soc_jack_add_pins
(
&
mic_jack
,
ARRAY_SIZE
(
mic_jack_pins
),
mic_jack_pins
);
/* headphone, microphone detection & headset short detection */
pm860x_hs_jack_detect
(
codec
,
&
hs_jack
,
SND_JACK_HEADPHONE
,
SND_JACK_BTN_0
,
SND_JACK_BTN_1
,
SND_JACK_BTN_2
);
pm860x_mic_jack_detect
(
codec
,
&
hs_jack
,
SND_JACK_MICROPHONE
);
return
0
;
}
static
int
__init
tavorevb3_init
(
void
)
{
int
ret
;
if
(
!
machine_is_tavorevb3
())
return
-
ENODEV
;
evb3_snd_device
=
platform_device_alloc
(
"soc-audio"
,
-
1
);
if
(
!
evb3_snd_device
)
return
-
ENOMEM
;
platform_set_drvdata
(
evb3_snd_device
,
&
snd_soc_card_evb3
);
ret
=
platform_device_add
(
evb3_snd_device
);
if
(
ret
)
platform_device_put
(
evb3_snd_device
);
return
ret
;
}
static
void
__exit
tavorevb3_exit
(
void
)
{
platform_device_unregister
(
evb3_snd_device
);
}
module_init
(
tavorevb3_init
);
module_exit
(
tavorevb3_exit
);
MODULE_AUTHOR
(
"Haojian Zhuang <haojian.zhuang@marvell.com>"
);
MODULE_DESCRIPTION
(
"ALSA SoC 88PM860x Tavor EVB3"
);
MODULE_LICENSE
(
"GPL"
);
sound/soc/pxa/zylonite.c
View file @
3843e87e
...
...
@@ -256,7 +256,6 @@ static struct snd_soc_card zylonite = {
.
resume_pre
=
&
zylonite_resume_pre
,
.
dai_link
=
zylonite_dai
,
.
num_links
=
ARRAY_SIZE
(
zylonite_dai
),
.
owner
=
THIS_MODULE
,
};
static
struct
platform_device
*
zylonite_snd_ac97_device
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment