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
nexedi
linux
Commits
278d064b
Commit
278d064b
authored
Feb 11, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/ak4642' into asoc-next
parents
c331a23b
c890caee
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
48 additions
and
2 deletions
+48
-2
Documentation/devicetree/bindings/sound/ak4642.txt
Documentation/devicetree/bindings/sound/ak4642.txt
+17
-0
sound/soc/codecs/ak4642.c
sound/soc/codecs/ak4642.c
+31
-2
No files found.
Documentation/devicetree/bindings/sound/ak4642.txt
0 → 100644
View file @
278d064b
AK4642 I2C transmitter
This device supports I2C mode only.
Required properties:
- compatible : "asahi-kasei,ak4642" or "asahi-kasei,ak4643" or "asahi-kasei,ak4648"
- reg : The chip select number on the I2C bus
Example:
&i2c {
ak4648: ak4648@0x12 {
compatible = "asahi-kasei,ak4642";
reg = <0x12>;
};
};
sound/soc/codecs/ak4642.c
View file @
278d064b
...
...
@@ -26,6 +26,7 @@
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/of_device.h>
#include <linux/module.h>
#include <sound/soc.h>
#include <sound/initval.h>
...
...
@@ -513,12 +514,31 @@ static struct snd_soc_codec_driver soc_codec_dev_ak4648 = {
};
#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE)
static
struct
of_device_id
ak4642_of_match
[];
static
int
ak4642_i2c_probe
(
struct
i2c_client
*
i2c
,
const
struct
i2c_device_id
*
id
)
{
struct
device_node
*
np
=
i2c
->
dev
.
of_node
;
const
struct
snd_soc_codec_driver
*
driver
;
driver
=
NULL
;
if
(
np
)
{
const
struct
of_device_id
*
of_id
;
of_id
=
of_match_device
(
ak4642_of_match
,
&
i2c
->
dev
);
if
(
of_id
)
driver
=
of_id
->
data
;
}
else
{
driver
=
(
struct
snd_soc_codec_driver
*
)
id
->
driver_data
;
}
if
(
!
driver
)
{
dev_err
(
&
i2c
->
dev
,
"no driver
\n
"
);
return
-
EINVAL
;
}
return
snd_soc_register_codec
(
&
i2c
->
dev
,
(
struct
snd_soc_codec_driver
*
)
id
->
driver_data
,
&
ak4642_dai
,
1
);
driver
,
&
ak4642_dai
,
1
);
}
static
int
ak4642_i2c_remove
(
struct
i2c_client
*
client
)
...
...
@@ -527,6 +547,14 @@ static int ak4642_i2c_remove(struct i2c_client *client)
return
0
;
}
static
struct
of_device_id
ak4642_of_match
[]
=
{
{
.
compatible
=
"asahi-kasei,ak4642"
,
.
data
=
&
soc_codec_dev_ak4642
},
{
.
compatible
=
"asahi-kasei,ak4643"
,
.
data
=
&
soc_codec_dev_ak4642
},
{
.
compatible
=
"asahi-kasei,ak4648"
,
.
data
=
&
soc_codec_dev_ak4648
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
ak4642_of_match
);
static
const
struct
i2c_device_id
ak4642_i2c_id
[]
=
{
{
"ak4642"
,
(
kernel_ulong_t
)
&
soc_codec_dev_ak4642
},
{
"ak4643"
,
(
kernel_ulong_t
)
&
soc_codec_dev_ak4642
},
...
...
@@ -539,6 +567,7 @@ static struct i2c_driver ak4642_i2c_driver = {
.
driver
=
{
.
name
=
"ak4642-codec"
,
.
owner
=
THIS_MODULE
,
.
of_match_table
=
ak4642_of_match
,
},
.
probe
=
ak4642_i2c_probe
,
.
remove
=
ak4642_i2c_remove
,
...
...
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